मैं ImageConverter क्लास को देख रहा था, यह पता लगाने की कोशिश कर रहा था कि BufferedImage को 8-बिट रंग में कैसे परिवर्तित किया जाए, लेकिन मुझे नहीं पता कि मैं यह कैसे करूं। मैं इंटरनेट के चारों ओर भी खोज रहा था और मुझे कोई आसान जवाब नहीं मिला, वे सभी 8 बिट ग्रेस्केल छवियों के बारे में बात कर रहे थे। मैं बस एक छवि के रंगों को 8 बिट में परिवर्तित करना चाहता हूं ... और कुछ नहीं, कोई आकार बदलने का कोई मतलब नहीं है। क्या कोई मुझे यह बताता है कि यह कैसे करना है।BufferedImage को 8 बिट में कैसे परिवर्तित करें?
उत्तर
लेख "Transparent gifs in Java" at G-Man's Uber Software Engineering Blog से यह कोड स्निपेट में अच्छी तरह से काम करता है:
public static void main(String[] args) throws Exception {
BufferedImage src = convertRGBAToIndexed(ImageIO.read(new File("/src.jpg")));
ImageIO.write(src, "gif", new File("/dest.gif"));
}
public static BufferedImage convertRGBAToIndexed(BufferedImage src) {
BufferedImage dest = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_INDEXED);
Graphics g = dest.getGraphics();
g.setColor(new Color(231, 20, 189));
// fill with a hideous color and make it transparent
g.fillRect(0, 0, dest.getWidth(), dest.getHeight());
dest = makeTransparent(dest, 0, 0);
dest.createGraphics().drawImage(src, 0, 0, null);
return dest;
}
public static BufferedImage makeTransparent(BufferedImage image, int x, int y) {
ColorModel cm = image.getColorModel();
if (!(cm instanceof IndexColorModel))
return image; // sorry...
IndexColorModel icm = (IndexColorModel) cm;
WritableRaster raster = image.getRaster();
int pixel = raster.getSample(x, y, 0); // pixel is offset in ICM's palette
int size = icm.getMapSize();
byte[] reds = new byte[size];
byte[] greens = new byte[size];
byte[] blues = new byte[size];
icm.getReds(reds);
icm.getGreens(greens);
icm.getBlues(blues);
IndexColorModel icm2 = new IndexColorModel(8, size, reds, greens, blues, pixel);
return new BufferedImage(icm2, raster, image.isAlphaPremultiplied(), null);
}
बहुत अच्छा काम किया, बस पारदर्शिता भाग को हटाना पड़ा। –
आप जेए (जावा उन्नत इमेजिंग), आधिकारिक सूर्य (अब ओरेकल) छवि लाइब्रेरी का उपयोग करने के लिए इसका उपयोग कर सकते हैं।
ColorQuantizerDescriptor आपके द्वारा लागू किए जा सकने वाले क्वांटिज़ेशन प्रक्रियाओं की पसंद दिखाता है।
क्या आपके पास कुछ नमूना कोड है? http://stackoverflow.com/questions/15312921/how-to-use-colorquantizerdescriptor –
- 1. एक 8-बिट OpenCV IplImage * को 32-बिट IplImage * में कैसे परिवर्तित करें?
- 2. आप 8-बिट बाइट्स को 6-बिट वर्णों में कैसे परिवर्तित करते हैं?
- 3. आरजीबी रंग को निकटतम मिलान 8-बिट रंग में कैसे परिवर्तित करें?
- 4. node.js में डेटा को utf-8 में कैसे परिवर्तित करें?
- 5. पायथन में फ़ाइल को utf-8 में कैसे परिवर्तित करें?
- 6. विशेष वर्णों को यूटीएफ -8 में कैसे परिवर्तित करें?
- 7. यूटीएफ -8 स्ट्रिंग को यूनिकोड में कैसे परिवर्तित करें?
- 8. C++ में utf-8 से ASCII को कैसे परिवर्तित करें?
- 9. BufferedImage
- 10. बिट हैक - 8
- 11. मैं 8 बिट अक्षरों को 7 बिट वर्णों में कैसे अनुवाद करूं? (i.e. Ü से यू)
- 12. बिट बाइट 8 बाइट्स
- 13. अंतर्निहित typecasting (8 बिट यू int करने में 32 बिट अहस्ताक्षरित परिवर्तित)
- 14. पाइथन बाइट को "हस्ताक्षरित 8 बिट पूर्णांक"
- 15. 8 बिट ऑडियो नमूने 16 बिट
- 16. 8-बिट सिस्टम
- 17. बिट्स को बिट्स में कैसे परिवर्तित करें?
- 18. दो बाइट्स को एक 16-बिट संख्या में कैसे परिवर्तित करें?
- 19. BufferedImage
- 20. जावा- bufferedimage को बाइट में परिवर्तित करें [] डिस्क पर लिखने के बिना
- 21. परिवर्तित बिट फील्ड
- 22. BufferedImage को बाइट में कनवर्ट करें [] बिना I/O
- 23. क्लिपबोर्ड पर BufferedImage कॉपी करें
- 24. जावा में BufferedImage अल्फा मास्क सेट करें
- 25. जावा BufferedImage फ़ाइलों की गणना कैसे करें
- 26. सी में डेटाटाइम को यूनिक्स टाइमस्टैम्प में कैसे परिवर्तित करें?
- 27. एक 128-बिट पूर्णांक को दशमलव में दशमलव एसीआई स्ट्रिंग में कैसे परिवर्तित करें?
- 28. बिटमैप्स को वीडियो में कैसे परिवर्तित करें?
- 29. विंडोज़ -1250/सीपी 1250 में यूटीएफ -8 में एन्कोडेड स्ट्रिंग को कैसे परिवर्तित करें?
- 30. पायथन में \ xXY एन्कोडेड वर्णों को यूटीएफ -8 में कैसे परिवर्तित करें?
आप शायद एक परिमाणीकरण एल्गोरिथ्म चयन करने के लिए, यानी की है। ऐसा कुछ जो आपकी छवियों के रंगों की श्रेणी को 256 एंट्री पैलेट में बदल देता है। – PhiLho
किसी छवि के रंगों को 8-बिट में परिवर्तित करके आपका क्या मतलब है? मुझे लगता है कि आप कलर स्पेस को कम करना चाहते हैं? क्या आप रंग क्वांटिज़ेशन करना चाहते हैं? – Behe
क्या आप मुझे किसी प्रकार की लाइब्रेरी/एपीआई में इंगित कर सकते हैं? मुझे नहीं पता कि आप किस बारे में बात कर रहे हैं। ऐसा लगता है कि मैं अपना खुद का पैलेट बनाने में सक्षम हूं जो संभव होने पर बेहतर होगा। –