Tôi có một hình ảnh mà tôi thay đổi kích thước:Java chỉnh sửa ảnh, duy trì tỷ lệ khía cạnh
if((width != null) || (height != null))
{
try{
// scale image on disk
BufferedImage originalImage = ImageIO.read(file);
int type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB
: originalImage.getType();
BufferedImage resizeImageJpg = resizeImage(originalImage, type, 200, 200);
ImageIO.write(resizeImageJpg, "jpg", file);
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
Đây là cách tôi thay đổi kích thước hình ảnh:
private static BufferedImage resizeImage(BufferedImage originalImage, int type,
Integer img_width, Integer img_height)
{
BufferedImage resizedImage = new BufferedImage(img_width, img_height, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, img_width, img_height, null);
g.dispose();
return resizedImage;
}
Bây giờ vấn đề là tôi cũng cần phải duy trì khía cạnh tỉ lệ. Tức là, tôi cần hình ảnh 200/200 mới để chứa hình ảnh mới được chia tỷ lệ. Một cái gì đó như thế này:
Tôi đã thử một số thứ nhưng không hoạt động như mong đợi. Bất kỳ trợ giúp nào được đánh giá cao. Cảm ơn rất nhiều.
Tôi đã sử dụng cùng một logic để thay đổi kích thước bitmap trong android :) –
Câu trả lời của @Ozzy là chính xác ngoại trừ khi không cần mở rộng quy mô (hoặc cụ thể hơn khi độ rộng ban đầu nhỏ hơn ranh giới). Việc khởi tạo 'new_width' và' new_height' thành 'original_width' và' original_height' sửa lỗi. –
Câu trả lời này chỉ làm cho ngày của tôi. : D –