[英]Image IO Problem
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
int intPixel = image.getRGB(i, j);
image.setRGB(i, j, intPixel);
}
}
ImageIO.write(image, "JPG", new File("img/newfile01.jpg"));
This code make a 96dpi image but the source image was 72 dpi! 此代码可生成96dpi的图像,但源图像为72 dpi! why
为什么
BufferedImage image = ImageIO.read(inputFile);
if (image.getColorModel().getColorSpace().getType() == ColorSpace.TYPE_GRAY) {
System.out.println("is grayscale");
}
// create jpegEncode for output image
JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(new FileOutputStream(outputFile));
// create jpeg encoder from getting defaul value from input buffered
// image
JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(image);
// setting up density unit paramter
jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
// setting up jpeg encode parameter
jpegEncoder.setJPEGEncodeParam(jpegEncodeParam);
// set quality parameter
jpegEncodeParam.setQuality(0.75f, false);
// set X-resolution
jpegEncodeParam.setXDensity(X_DPI);
// set Y-resolution
jpegEncodeParam.setYDensity(Y_DPI);
// encode output image
jpegEncoder.encode(image, jpegEncodeParam);
// flush the buffer image
image.flush();
it seems there is a default value. 似乎有一个默认值。 Does
image.setDpi(72)
work? image.setDpi(72)
是否有效?
Take a look at the answer here previously asked for PNG images 看一下以前要求PNG图片的答案
ImageIO allows you to set image metadata for some output formats, but it is not a trivial task, and may not be supported for JPEG images. ImageIO允许您为某些输出格式设置图像元数据,但这不是一件容易的事,并且JPEG图像可能不受支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.