2012-07-06 19 views
6

this question görüntüledim, ancak sahip olduğum soruyu gerçekten yanıtlamıyor gibi görünmüyor. Herhangi bir çözünürlükte olabilecek bir görüntü dosyasına sahibim. Bu görüntüyü belirli bir çözünürlükte BufferedImage Nesnesine yüklemem gerekiyor (örneğin, bu örnek için 800x800). Görüntü sınıfının yeni bir boyuta ölçeklendirmek için Image sınıfının getScaledInstance() kullanabileceğini biliyorum, ancak daha sonra bir BufferedImage ürününe nasıl geri döneceğimi anlayamıyorum. Tamponlu bir görüntüyü belirli bir boyuta ölçeklendirmenin basit bir yolu var mı?Bir BufferedImage ölçeğini nasıl ölçeklendiririm

NOT Resmi belirli bir faktörle ölçeklemek istemiyorum, resim çekmek ve belirli bir boyutta yapmak istiyorum.

+0

** Belirli bir faktörle ölçeklemek üzere istemiyorum, ben belirli büyüklüğünde bir görüntü almak ve yapmak istiyorum ** Bu kolayca yapılabilir: 'factor = originalSize \ newSize;' – GETah

cevap

8

Something? :

/** 
* 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

İstediğiniz büyüklükte yeni BufferedImage oluşturabilir ve sonra yeni birine orijinal resmin ölçekli boya gerçekleştirin: Böyle

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

bu web sitesi bakın Link1

Ya Bu Link2

+0

Bu teorik olarak soruya cevap verebilirken, [tercih edilir] (// meta.stackoverflow.com/q/8259) Buradaki cevabı ve referans için bağlantıyı sağlayın. –

+0

@KarlRichter girişi için teşekkürler. Yakında cevabı kesinlikle güncelleyeceğim. – codeDEXTER

İlgili konular