sorun Image.getScaledInstance()
bir bitmiş ölçekli görüntüyü döndürmek olmamasıdır resim pikselleri kullanıldığında. Bu bir sonraki süre ölçeklendirme çalışmalarının çok bırakır. Örneğin
, bir Graphics2D.drawImage()
çağrısında ölçekli resim kullanıyorsanız o zaman yöntem false değerini döndürür ve zaman uyumsuz olarak çizmeye devam eder. Daha sonra ölçeklendirme ve çizimin tamamlanmasını beklemek için Graphics2D.drawImage()
aramasındaki ImageObserver
parametresini kullanmanız gerekir.
Aşağıdaki örnek, görüntüleri ImageObserver
olmadan daha basit şekilde ölçeklendirmeyi gösterir. Ölçeklendirme, simgesini BufferedImage
içine çekerek yapılır.
import javax.swing.ImageIcon;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.Color;
import java.awt.Graphics2D;
import java.io.File;
import javax.imageio.ImageIO;
import java.awt.RenderingHints;
public class Tushar2
{
public void scaleImage()
{
try
{
ImageIcon ii = new ImageIcon("/tmp/apple.jpg");
BufferedImage bi = new BufferedImage(50, 50, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D)bi.createGraphics();
g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY));
boolean b = g2d.drawImage(ii.getImage(), 0, 0, 50, 50, null);
System.out.println(b);
ImageIO.write(bi, "jpg", new File("/tmp/apple50.jpg"));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String []args)
{
new Tushar2().scaleImage();
}
}
Hangi hatalarla karşılaşıyorsunuz? Orijinal ImageIcon'u gerçekten görüntüleyebilir misiniz? Nasıl biliyorsun, ölçekleme değil. Yayınladığınız iki kod satırına bağlı olarak, görüntü ile hiçbir şey yapmazsınız. Sorunu gösteren [SSCCE] 'yi (http://sscce.org) gönderin. – camickr
görüntü görünmüyor ... görüntü beyaz olarak değişir ... –
O zaman muhtemelen görüntüyü okumadı. SSCCE göndermediniz, bu yüzden sizin için yapabileceğimiz başka bir şey yok. – camickr