A primeira das minhas soluções é o redimensionamento de imagens em Java, depois de muito apanhar consegui descobrir porque as imagens ficavam pretas depois de executar um código que vi em vários foruns. O problema era a forma com que a imagem está sendo criada, troquei um File("url da imagem") por ImageIO.read("url da imagem"). Em seguida está o código da minha solução:
public static String redimensionar(Image image, int width, int height, int quality,String nomeImagem) {
try {
double thumbRatio = (double) width / (double) height;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double) imageWidth / (double) imageHeight;
if (thumbRatio <>
height = (int) (width / imageRatio);
} else {
width = (int) (height * imageRatio);
}
BufferedImage thumbImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, width, height, null);
BufferedOutputStream out;
out = new BufferedOutputStream(new FileOutputStream(imagesDir + nomeImagem));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float) quality / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
out.close();
return null;
} catch (Exception e) {
System.out.println(e.getMessage());
return e.getMessage();
}
}
public static void main(String[] args) {
try {
int width = 200; // Lagura da miniatura
int height = 200; // Altuta da miniatura
int quality = 80; // Qualidade da imagem [0~100]
File file = new File("http://www.dc.ufscar.br/imgs/dc.jpg");
URL url = new URL("http://www.dc.ufscar.br/imgs/dc.jpg");
Image image = ImageIO.read(url);
redimensionar(image, width, height, quality, file.getName());
System.out.println("A imagem " + file.getName() + " foi redimensionada com sucesso");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
Nenhum comentário:
Postar um comentário