我试图将PNG图像转换为以下this教程中的JPEG图像。但是我遇到了一个问题。生成的图像有粉红色的图层。Java PNG到JPG错误
有没有人有这个问题的解决方案?或者我应该使用什么代码才能将图像转换为所需的格式?
在此先感谢!
我试图将PNG图像转换为以下this教程中的JPEG图像。但是我遇到了一个问题。生成的图像有粉红色的图层。Java PNG到JPG错误
有没有人有这个问题的解决方案?或者我应该使用什么代码才能将图像转换为所需的格式?
在此先感谢!
创建所需大小的BufferedImage,如:对图像的图形
img.getGraphics().fillRect(....)
呼叫的drawImage:
BufferedImage img = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB)
与适当的背景颜色填充在该背景之上:
img.getGraphics().drawImage(image, 0, 0, null);
然后写下你的JPG照常图像。
谢谢! fillRect完成了这项工作。 – 2012-03-04 15:38:59
另请参阅graphics.drawImage与您选择的颜色和null ImageObserver:http://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html#drawImage-java.awt.Image-int -int-java.awt.Color-java.awt.image.ImageObserver- – m4rtin 2014-08-16 21:49:26
您使用哪种颜色模式?在创建缓冲图像对象时,尝试添加类似此选项的类型。
File newFile = new File(path + fileName + "." + Strings.FILE_TYPE);
Image image = null;
try {
image = ImageIO.read(url); // I was using an image from web
} catch (IOException e1) {
e1.printStackTrace();
}
image = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
try {
BufferedImage img = toBufferedImage(image);
ImageIO.write(img, "jpg", newFile);
} catch (IOException e) {
e.printStackTrace();
}
}
private static BufferedImage toBufferedImage(Image src) {
int w = src.getWidth(null);
int h = src.getHeight(null);
int type = BufferedImage.TYPE_INT_RGB; // other options
BufferedImage dest = new BufferedImage(w, h, type);
Graphics2D g2 = dest.createGraphics();
g2.drawImage(src, 0, 0, null);
g2.dispose();
return dest;
}
现在我在教程中有4行。我不知道这些变量是什么:dest和src。如何申报? – 2012-03-04 15:36:57
这不是一个教程,而是一对代码片段。你能上传问题图片吗?它有多大的字节数? – 2012-03-04 15:18:15
这里是一个样本图片:http://imageshack.us/photo/my-images/19/samplepngimage.png/ – 2012-03-04 15:24:49