2012-07-06 38 views
6

Tôi đã xem this question, nhưng dường như không thực sự trả lời câu hỏi mà tôi có. Tôi có một tệp hình ảnh, có thể là bất kỳ độ phân giải nào. Tôi cần tải hình ảnh đó vào một đối tượng BufferedImage ở độ phân giải cụ thể (ví dụ, ví dụ này, 800x800). Tôi biết lớp hình ảnh có thể sử dụng getScaledInstance() để chia tỷ lệ hình ảnh thành kích thước mới, nhưng sau đó tôi không thể tìm ra cách để đưa nó trở lại BufferedImage. Có cách nào đơn giản để chia tỷ lệ hình ảnh đệm thành một kích thước cụ thể không?Tôi làm cách nào để chia tỷ lệ BufferedImage

LƯU Ý Tôi không muốn chia tỷ lệ hình ảnh theo một yếu tố cụ thể, tôi muốn chụp ảnh và tạo thành một kích thước cụ thể.

+0

** Tôi không muốn chia tỷ lệ ảnh bởi một yếu tố cụ thể, tôi muốn có một hình ảnh và thực hiện là một kích thước cụ thể ** Điều này có thể được thực hiện dễ dàng: 'factor = originalSize \ newSize;' – GETah

Trả lời

8

Something như thế này? :

/** 
* Resizes an image using a Graphics2D object backed by a BufferedImage. 
* @param srcImg - source image to scale 
* @param w - desired width 
* @param h - desired height 
* @return - the new resized image 
*/ 
private BufferedImage getScaledImage(Image srcImg, int w, int h){ 
    BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TRANSLUCENT); 
    Graphics2D g2 = resizedImg.createGraphics(); 
    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
    g2.drawImage(srcImg, 0, 0, w, h, null); 
    g2.dispose(); 
    return resizedImg; 
} 
4

Bạn có thể tạo một BufferedImage mới của kích thước mà bạn muốn và sau đó thực hiện một sơn thu nhỏ của ảnh gốc vào mới:

BufferedImage resizedImage = new BufferedImage(new_width, new_height, BufferedImage.TYPE_INT_ARGB); 
Graphics2D g = resizedImage.createGraphics(); 
g.drawImage(image, 0, 0, new_width, new_height, null); 
g.dispose(); 
1

xem trang web này Link1

Hoặc này Link2

+0

Trong khi điều này về lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (// meta.stackoverflow.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. –

+0

Cảm ơn bạn đã nhập @KarlRichter. Tôi chắc chắn sẽ sớm cập nhật câu trả lời. – codeDEXTER

Các vấn đề liên quan