westei / thumbnailator

Automatically exported from code.google.com/p/thumbnailator
Other
0 stars 0 forks source link

Resizing an index-paletted transparent PNG results in a black background #41

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
I want to resize a png file in following code:
  Thumbnails.of(srcImg).size(width, height).toFile(optImg)

But all transparent background turns to black.
See the attach
What should I do?

thumbnailator-0.4.0 in sun/oracle jdk1.7

Thank you very much!

Original issue reported on code.google.com by Science...@gmail.com on 8 Nov 2012 at 4:27

Attachments:

GoogleCodeExporter commented 9 years ago
Hi,

Thank you for reporting this issue.

I was able to reproduce the issue you have encountered with Thumbnailator 0.4.2.

The root cause is that the original image is a image which is using an indexed 
palette with a specific color used for the transparent pixels. (Similar to how 
transparent GIFs work)

There is no workaround for this issue (as fixing this problem will require 
additional checks in the code), so there isn't anything that can be done at 
this moment.

If it is possible, if you can use a PNG image with an actual alpha 
(transparency) channel, then it should be able to keep the transparency 
correctly.

Original comment by coobird...@gmail.com on 11 Nov 2012 at 11:56

GoogleCodeExporter commented 9 years ago
Thank you for your help.
Sincerely

Original comment by Science...@gmail.com on 13 Nov 2012 at 9:25

GoogleCodeExporter commented 9 years ago
I would love to see this resolved since I can't control whether the source 
image has an alpha channel or not.

Let me know if there's anything I can do.

Original comment by liquid...@gmail.com on 13 Feb 2013 at 10:33

GoogleCodeExporter commented 9 years ago
Use the following with your image to replace the Transparent Pixels with White 
color.  It worked perfectly with me.

if( buffered.getColorModel().getTransparency() != Transparency.OPAQUE) {
            int w = buffered.getWidth();
            int h = buffered.getHeight();
            image2 = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
            Graphics2D g = image2.createGraphics();
            g.setColor(Color.WHITE);
            g.fillRect(0,0,w,h);
            g.drawRenderedImage(buffered, null);
            g.dispose();
        }
Thanks..

Original comment by sandeep....@gmail.com on 25 Feb 2013 at 9:44

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
This happens also with GIFs.

Original comment by on...@generify.io on 3 Mar 2013 at 9:41

GoogleCodeExporter commented 9 years ago
I have verified that the background will turn black for both PNG and GIF files 
(which have a transparent color set in their indexed pallete) using 
Thumbnailator 0.4.3 running Java 7.

I will increase the priority of this issue, as it appears to affect more users 
than I had initially expected.

I would like to thank everyone who has taken their time to provide input toward 
this issue.

Original comment by coobird...@gmail.com on 7 Apr 2013 at 8:15

GoogleCodeExporter commented 9 years ago
Plz let the user choose what color to use as background when pngs with 
transparency are converted to jpg

Original comment by guillerm...@gmail.com on 14 May 2013 at 6:31

GoogleCodeExporter commented 9 years ago
I would also like to be able to choose what color is used to replace the 
transparency.

Original comment by br...@relayrides.com on 4 Dec 2013 at 9:31

GoogleCodeExporter commented 9 years ago
I have exactly the same problem. Do we have any update on this?

Original comment by fangz...@arkxu.com on 12 Aug 2014 at 11:25

GoogleCodeExporter commented 9 years ago
Hi guys,

is there any update on this? I ran into the same problem. Would also like to 
have an easy way to configure the resulting background color out of a 
transparent image.

Original comment by bieler.s...@googlemail.com on 9 Sep 2014 at 5:00

GoogleCodeExporter commented 9 years ago
HI

I just ran into this issue and cant seem to find a workaround. 

E.g if I have a PNG and do this 
File fn = new File("test.png") ;
File f = new File("test-small.png)" ;
int s = 300 ;
Thumbnails.of(fn).size(s, s).toFile(f);

The resultant file has a back background when displayed

Original comment by ja...@jem.co on 17 Mar 2015 at 11:33

Attachments:

GoogleCodeExporter commented 9 years ago
Hello there,

Yes, I can confirm that the newly uploaded image also exhibits the same issue 
as the image originally attached to this issue. (The image of the star)

The issue with this new image (headset) is also the same as the original image 
(star) in that they are both index-paletted PNGs which specifies a specific 
color to be transparent.

Original comment by coobird...@gmail.com on 18 Mar 2015 at 5:25