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)背景。嗯,对不起,你的问题中没有具体说明。你说“它坏了”是什么意思?我不需要透明度,我想要一个白色的背景嗯,对不起,你的问题中没有具体说明。你说的“它坏了”是什么意思?