पर पिक्सेल लिखने का सबसे तेज़ तरीका मैं javafx.scene.image.Image
पर पिक्सल लिखने का सबसे तेज़ तरीका ढूंढ रहा हूं। BufferedImage
की बैकिंग सरणी को लिखना बहुत तेज है। कम से कम परीक्षण छवि पर मैंने BufferedImage
, WritableImage
के लिए केवल ~ 20ms लिया, दूसरी तरफ ~ 100ms लिया। मैंने पहले से ही SwingFXUtils
की कोशिश की लेकिन कोई भाग्य नहीं है।जावाएफएक्स: पिक्सलवाइटर
BufferedImage
के लिए कोड (तेज):
BufferedImage bi = createCompatibleImage(width, height);
WritableRaster raster = bi.getRaster();
DataBufferInt dataBuffer = (DataBufferInt) raster.getDataBuffer();
System.arraycopy(pixels, 0, dataBuffer.getData(), 0, pixels.length);
कोड WritableImage
के लिए (धीमा):
WritableImage wi = new WritableImage(width, height);
PixelWriter pw = wi.getPixelWriter();
WritablePixelFormat<IntBuffer> pf = WritablePixelFormat.getIntArgbInstance();
pw.setPixels(0, 0, width, height, pf, pixels, 0, width);
हो सकता है कि वहाँ एक रास्ता WritableImage
के समर्थन सरणी के लिए भी लिखने के लिए है?
यह प्रश्न का उत्तर नहीं देता है। पिक्सेल प्रारूप इस्तेमाल होने वाली स्रोत छवि पर निर्भर करता है। यदि आप स्रोत छवि प्रारूप से मेल खाने वाले प्रारूप का उपयोग नहीं करते हैं तो आपको रनटाइम पर अपवाद मिलेगा। – jjhavokk
मुझे लगता है कि स्रोत पिक्सेल प्रारूप को अनुकूलित किया जा सकता है ताकि अधिकतम स्थानांतरण दर हासिल की जा सके। यह अक्सर तब होता है जब आप पिक्सेल सामग्री स्वयं बनाते हैं। – mipa