Pessoal…
eu redimensionei uma imagem… so que nao quero escreve-la , e sim passar esse Imagem para um file…
queria saber se existe alguma maneira de fazer isso…
ou se nao … alguma ideia de como redimensionar uma imagem para poder enviar ela como um file
esse e meu codigo de redimensionamento
[code]
public void compressJpegFile(File infile, File outfile,float compressionQuality,int widthCanvas,int heightCanvas)
throws IOException {
// Retrieve jpg image to be compressed
BufferedImage rendImage = ImageIO.read(infile);
widthFile = rendImage.getWidth();
heightFile = rendImage.getHeight();
double aspectRatioCanvas = widthCanvas/heightCanvas;
double aspectRatioFile = widthFile/heightFile;
widthFile = widthCanvas;
heightFile = widthCanvas/aspectRatioFile;
if(heightFile>heightCanvas){
heightFile = heightCanvas;
widthFile = heightCanvas*aspectRatioFile;
}
this.width = (int)widthFile;
this.height = (int)heightFile;
ImageTypeSpecifier its = ImageTypeSpecifier.createFromRenderedImage(rendImage);
BufferedImage outImage = its.createBufferedImage(width, height);
Graphics2D graphics2D = outImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
// graphics2D.drawRenderedImage(rendImage, new AffineTransform());
graphics2D.drawImage(rendImage, 0, 0, width, height, null);
// Find a jpeg writer
ImageWriter writer = null;
Iterator iter = ImageIO.getImageWritersByFormatName("jpg");
if (iter.hasNext()) {
writer = (ImageWriter)iter.next();
}
// Prepare output file
ImageOutputStream ios = ImageIO.createImageOutputStream(outfile);
writer.setOutput(ios);
// Set the compression quality
ImageWriteParam iwparam = new JPEGImageWriteParam(Locale.getDefault());
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ;
iwparam.setCompressionQuality(compressionQuality);
// Write the image
writer.write(null, new IIOImage(outImage, null, null), iwparam);
//infile.delete();
// Cleanup
ios.flush();
writer.dispose();
ios.close();
// return
} [/code]