Java 如何将gif图像转换为jpg?

Java 如何将gif图像转换为jpg?,java,Java,像这样 它有透明的背景 当我使用ImageIO.write(image,“jpg”,file)保存时,它可能会被破坏 破坏的结果是 如何解决这个问题?多谢各位 我的代码: import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import junit.framework.Tes

像这样

它有透明的背景

当我使用
ImageIO.write(image,“jpg”,file)
保存时,它可能会被破坏

破坏的结果是

如何解决这个问题?多谢各位

我的代码:

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);
    }
}
我用过:

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
        }
    }
}
for(int x=0;x>24)和0xff;
如果(alpha!=255){
scaled.setRGB(x,y,-1);//设置为白色
}
}
}
查一下


这是不对的,结果是JPG不支持透明度,所以你不能


请尝试使用PNG、TIFF或GIF。JPG不支持透明,因此您不能

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<ImageWriter> 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();   
尝试改用PNG、TIFF或GIF。

AreaAveragingScaleFilter scaleFilter=
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<ImageWriter> 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();   
新区域平均缩放过滤器( 数学圆(原始宽度/系数x), 数学圆(原始高度/工厂); ImageProducer=new FilteredImageSource(original.getSource(),scaleFilter); ImageGenerator=新的ImageGenerator(); 生产商。开始生产(发电机); BuffereImage scaled=generator.getImage(); 对于(int x=0;x>24)和0xff; 如果(alpha!=255){ scaled.setRGB(x,y,-1);//设置为白色 } } } JPEGImageWriteParam参数=新的JPEGImageWriteParam(null); 参数setCompressionMode(JPEGImageWriteParam.MODE_显式); 参数设置压缩质量((浮动)0.85); java.util.Iterator it=ImageIO.getImageWritersBySuffix(“jpg”); ImageWriter=it.next(); dest.getParentFile().mkdirs(); setOutput(新文件ImageOutputStream(dest)); writer.write(空,新IIOImage(缩放,空,空),参数); writer.dispose();

区域AveragingScaleFilter scaleFilter检查=
新区域平均缩放过滤器(
数学圆(原始宽度/系数x),
数学圆(原始高度/工厂);
ImageProducer=new FilteredImageSource(original.getSource(),scaleFilter);
ImageGenerator=新的ImageGenerator();
生产商。开始生产(发电机);
BuffereImage scaled=generator.getImage();
对于(int x=0;x>24)和0xff;
如果(alpha!=255){
scaled.setRGB(x,y,-1);//设置为白色
}
}
}
JPEGImageWriteParam参数=新的JPEGImageWriteParam(null);
参数setCompressionMode(JPEGImageWriteParam.MODE_显式);
参数设置压缩质量((浮动)0.85);
java.util.Iterator it=ImageIO.getImageWritersBySuffix(“jpg”);
ImageWriter=it.next();
dest.getParentFile().mkdirs();
setOutput(新文件ImageOutputStream(dest));
writer.write(空,新IIOImage(缩放,空,空),参数);
writer.dispose();

中查看,我不能对代码发表评论,因为我不是Java大师,但是

JPEG格式不支持透明背景,因此如果您希望保留透明背景,则不会发生这种情况


(不确定为什么要进行转换,但如果需要支持透明度的高颜色格式,请改用PNG)

我不能对代码发表评论,因为我不是Java大师,但是

JPEG格式不支持透明背景,因此如果您希望保留透明背景,则不会发生这种情况


(不确定为什么要进行转换,但如果需要支持透明度的高颜色格式,请改用PNG)

从一种格式转换为另一种格式只是一个开始:)如果是我,我将通过将命令传递给操作系统来使用ImageMagik,并让ImageMagick处理其余的事情


除了转换,您还可以调整大小、添加文本以及对新创建的图像执行几乎所有的photoshop操作,这很简单。

从一种格式转换到另一种格式只是一个开始:)如果是我,我将通过将命令传递到操作系统来使用ImageMagik,并让ImageMagick处理其余的事情


除了转换外,您还可以调整大小、添加文本以及对新创建的图像执行几乎所有的photoshop操作,这很简单。

相关:JPEG是一种有损于照片的格式,对于具有锐利边缘的图像(如图表或提供的徽标)是有害的。它看起来模糊难看。我建议改为PNG。相关:JPEG是一种为照片设计的有损格式,不利于边缘锐利的图像,如图表或提供的徽标。它看起来模糊难看。我建议改为PNG。我不需要透明度,我想要一个白色(#FFFFFF)背景。嗯,对不起,你的问题中没有具体说明。你说“它坏了”是什么意思?我不需要透明度,我想要一个白色的背景嗯,对不起,你的问题中没有具体说明。你说的“它坏了”是什么意思?