आप के बजाय Toolkit.createImage(url)
का उपयोग करके इस पर काम कर सकते हैं जो डिकोडिंग एल्गोरिदम के एक अलग कार्यान्वयन का उपयोग करता है।
यदि आप सूर्य जेडीके के साथ जेपीईजी एन्कोडर का उपयोग कर रहे हैं तो आपको यह भी सुनिश्चित करना होगा कि आप इसे अल्फा चैनल के साथ एक छवि पास कर दें।
उदाहरण:
private static final int[] RGB_MASKS = {0xFF0000, 0xFF00, 0xFF};
private static final ColorModel RGB_OPAQUE =
new DirectColorModel(32, RGB_MASKS[0], RGB_MASKS[1], RGB_MASKS[2]);
// ...
String sUrl="http://img01.taobaocdn.com/imgextra/i1/449400070/T2hbVwXj0XXXXXXXXX_!!449400070.jpg";
URL url = new URL(sUrl);
Image img = Toolkit.getDefaultToolkit().createImage(url);
PixelGrabber pg = new PixelGrabber(img, 0, 0, -1, -1, true);
pg.grabPixels();
int width = pg.getWidth(), height = pg.getHeight();
DataBuffer buffer = new DataBufferInt((int[]) pg.getPixels(), pg.getWidth() * pg.getHeight());
WritableRaster raster = Raster.createPackedRaster(buffer, width, height, width, RGB_MASKS, null);
BufferedImage bi = new BufferedImage(RGB_OPAQUE, raster, false, null);
String to = "D:/temp/result.jpg";
ImageIO.write(bi, "jpg", new File(to));
नोट: मेरा अनुमान है कि रंग प्रोफ़ाइल दूषित है है, और Toolkit.createImage()
सभी रंग प्रोफाइल पर ध्यान नहीं देता। यदि ऐसा है तो यह जेपीईजी की गुणवत्ता को कम करेगा जिसमें सही रंग प्रोफाइल है।
डुप्लिकेट नहीं बल्कि 'ImageIO.write()': http: // stackoverflow के साथ एक समान परिणाम। कॉम/प्रश्न/1830063/समस्या-कनवर्टिंग-पीएनजी-टू-जेपीजी-उपयोग-जावा-छवि-लेखन –
धन्यवाद, लेकिन 'पृष्ठ नहीं मिला', मुझे जवाब नहीं मिल रहा है – Koerr
आप अंतर्निहित पाठक jpeg पढ़ने के लिए उपयोग करते हैं ImageIO wrapper के साथ? यह छोटी गाड़ी हो सकती है। – Jules