Reputation: 4866
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! why
Upvotes: 1
Views: 2836
Reputation: 4866
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();
Upvotes: 1
Reputation: 1453
Take a look at the answer here previously asked for PNG images
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.
Upvotes: 0