Hi,
Really struggling with a problem, I found a script that alters the dpi of an image, but I also need it to resize the image height/width. I've added the line;
|
Code:
|
BufferedImage thumb = image.getScaledInstance(size,-1, BufferedImage.SCALE_SMOOTH); |
to do the resizing but it keeps coming up with the error;
incompatible types
found : java.awt.Image
required: java.awt.image.BufferedImage
BufferedImage thumb = image.getScaledInstance(size,-1, BufferedImage.SCALE_SMOOTH);
^
1 error
Any help would be really appreciated. I've add the script below.
Many Thanks in advance
Rob
|
Code:
|
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.stream.FileImageInputStream;
import javax.swing.ImageIcon;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class JpegDensity {
private ImageIcon image;
private ImageIcon thumb;
public JpegDensity(Image image)
{
this.image = new ImageIcon(image);
}
public JpegDensity(String fileName)
{
image = new ImageIcon(fileName);
}
public static final int size = 600;
public static void main(String[] args) throws Exception {
File infile = new File("/fmimages/49433.jpg");
File outfile = new File("/fmimages/density666.jpg");
ImageReader reader = ImageIO.getImageReadersByFormatName("jpeg").next();
reader.setInput(new FileImageInputStream(infile), true, false);
IIOMetadata data = reader.getImageMetadata(0);
BufferedImage image = reader.read(0);
BufferedImage thumb = image.getScaledInstance(size,-1, BufferedImage.SCALE_SMOOTH);
Element tree = (Element) data.getAsTree("javax_imageio_jpeg_image_1.0");
Element jfif = (Element) tree.getElementsByTagName("app0JFIF").item(0);
for (int i = 0; i < jfif.getAttributes().getLength(); i++) {
Node attribute = jfif.getAttributes().item(i);
System.out.println(attribute.getNodeName() + "="
+ attribute.getNodeValue());
}
FileOutputStream fos = new FileOutputStream(outfile);
JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(thumb);
jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
jpegEncodeParam.setXDensity(300);
jpegEncodeParam.setYDensity(300);
jpegEncoder.encode(thumb, jpegEncodeParam);
fos.close();
}
} |