समस्या यह है कि Image.getScaledInstance()
एक समाप्त होने पर, आकार बदली गई चित्र वापस नहीं करता है । यह एक बाद में समय के लिए स्केलिंग काम की बहुत छोड़ देता है जब छवि पिक्सल किया जाता है।
उदाहरण के लिए, तो आप एक Graphics2D.drawImage()
कॉल में स्केल की छवि का उपयोग करता है, तो विधि झूठी वापसी होगी और असीमित रूप से ड्राइंग जारी रखेगी। आपको स्केलिंग और ड्राइंग के पूरा होने की प्रतीक्षा करने के लिए Graphics2D.drawImage()
कॉल में ImageObserver
पैरामीटर का उपयोग करना होगा।
निम्नलिखित उदाहरण दिखाता है कि छवियों को ImageObserver
के बिना कैसे स्केल करें। स्केलिंग आइकन को BufferedImage
में चित्रित करके किया जाता है।
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();
}
}
स्रोत
2011-09-03 13:31:08
आपको क्या त्रुटियां मिल रही हैं? क्या आप वास्तव में मूल छवि आइकन प्रदर्शित कर सकते हैं? आप कैसे जानते हैं स्केलिंग नहीं है। आपके द्वारा पोस्ट किए गए कोड की दो पंक्तियों के आधार पर आप छवि के साथ कुछ भी नहीं करते हैं। अपना [एसएससीसीई] (http://sscce.org) पोस्ट करें जो समस्या का प्रदर्शन करता है। – camickr
छवि प्रदर्शित नहीं हो रही है ... छवि सफेद में बदलती है ... –
फिर शायद यह छवि नहीं पढ़ी। आपने एसएससीसीई पोस्ट नहीं किया है, इसलिए हम आपके लिए और कुछ नहीं कर सकते हैं। – camickr