java gif转jpg,如何将gif图像转换为jpg?

like this

gif image

it has transparent background,

when i using ImageIO.write(image,"jpg", file) to save,it's be broken

the broken result is here

how to fix it problem? thank you

my code:

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.net.URL;

import javax.imageio.ImageIO;

import junit.framework.TestCase;

public class ImageResize1 extends TestCase{

public void testT1() throws IOException{

URL url=new URL("http://ec.europa.eu/culture/media/programme/images/logos/01_tr_media_col/01_tr_media_col_gif.gif");

BufferedImage image=ImageIO.read(url);

File file=new File("C:/temp/java/t7.jpg");

ImageIO.write(image,"jpg", file);

}

}

i used:

for(int x = 0; x < scaled.getWidth(); x++) {

for(int y = 0; y < scaled.getHeight(); y++) {

int rgb = scaled.getRGB(x, y);

int alpha = (rgb >> 24) & 0xff;

if(alpha != 255) {

scaled.setRGB(x, y,-1); //set white

}

}

}

check it from here

it's not right,result is here

解决方案

AreaAveragingScaleFilter scaleFilter =

new AreaAveragingScaleFilter(

Math.round(originalWidth / factorX),

Math.round(originalHeight / factorY));

ImageProducer producer = new FilteredImageSource(original.getSource(), scaleFilter);

ImageGenerator generator = new ImageGenerator();

producer.startProduction(generator);

BufferedImage scaled = generator.getImage();

for(int x = 0; x < scaled.getWidth(); x++) {

for(int y = 0; y < scaled.getHeight(); y++) {

int rgb = scaled.getRGB(x, y);

int alpha = (rgb >> 24) & 0xff;

if(alpha != 255) {

scaled.setRGB(x, y,-1); //set white

}

}

}

JPEGImageWriteParam param = new JPEGImageWriteParam(null);

param.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);

param.setCompressionQuality((float) 0.85);

java.util.Iterator it = ImageIO.getImageWritersBySuffix("jpg");

ImageWriter writer = it.next();

dest.getParentFile().mkdirs();

writer.setOutput(new FileImageOutputStream(dest));

writer.write(null, new IIOImage(scaled, null, null), param);

writer.dispose();

Check it from here

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值