में एक सीनियरग्राफ की सामग्री को आउटपुट कैसे करें JavaFX 2 में Image
में Scene
ग्राफ़ की सामग्री को आउटपुट कैसे करें। असल में, मैं एक ऐप पर काम कर रहा हूं, जो मूल रूप से कार्ड तैयार करता है। तो, उपयोगकर्ता बस दृश्य को अनुकूलित करने के लिए विभिन्न विकल्पों पर क्लिक करता है। आखिर में मैं दृश्य सामग्री को एक छवि फ़ाइल में निर्यात करना चाहता हूं। मैं उसको कैसे करू ?जावाएफएक्स 2 में एक छवि
उत्तर
एफएक्स 2.2 में नई स्नैपशॉट सुविधा उस मामले के लिए दिखाई दी। तुम बस कह सकते हैं
WritableImage snapshot = scene.snapshot(null);
बड़े FX के साथ आप AWT रोबोट का उपयोग कर सकते हैं। यह बहुत अच्छा दृष्टिकोण नहीं है क्योंकि इसे शुरू करने के लिए पूरे एडब्ल्यूटी स्टैक की आवश्यकता है।
// getting screen coordinates of a node (or whole scene)
Bounds b = node.getBoundsInParent();
int x = (int)Math.round(primaryStage.getX() + scene.getX() + b.getMinX());
int y = (int)Math.round(primaryStage.getY() + scene.getY() + b.getMinY());
int w = (int)Math.round(b.getWidth());
int h = (int)Math.round(b.getHeight());
// using ATW robot to get image
java.awt.Robot robot = new java.awt.Robot();
java.awt.image.BufferedImage bi = robot.createScreenCapture(new java.awt.Rectangle(x, y, w, h));
// convert BufferedImage to javafx.scene.image.Image
java.io.ByteArrayOutputStream stream = new java.io.ByteArrayOutputStream();
// or you can write directly to file instead
ImageIO.write(bi, "png", stream);
Image image = new Image(new java.io.ByteArrayInputStream(stream.toByteArray()), w, h, true, true);
अद्यतन
JavaFX 2.2 (jdk7u6) एक नोड snapshot to image सुविधा है जो इस कार्य को पूरा करने के लिए पसंदीदा तरीका होगा गयी।
2.2 से पहले, जावाएफएक्स में वर्तमान में एक नोड या सीन को एक छवि में बदलने के लिए सार्वजनिक फ़ंक्शन नहीं है। इस http://javafx-jira.kenai.com/browse/RT-13751 के लिए एक खुला सुविधा अनुरोध है (कोई भी वर्तमान सुविधा अनुरोध स्थिति देखने के लिए साइन अप कर सकता है)।
इस बीच में समाधान के लिए, आप घुमाओ/AWT कार्यों का उपयोग करने के लिए एक छवि JavaFX दृश्य कन्वर्ट करने के लिए कर सकता है और एक फाइल करने के लिए परिणामी छवि लिखें: JavaFXDev: Screen capture tool:
BufferedImage img = new Robot().createScreenCapture(
new java.awt.Rectangle(
(int)sceneRect.getX(), (int)sceneRect.getY(),
(int)sceneRect.getWidth()-1, (int)sceneRect.getHeight()-1));
File file = File.createTempFile("card", ".jpg");
ImageIO.write(img, "jpg", file);
ऊपर कोड से दूसरे शब्दों में बयान किया गया है ।
sceneRect द्वारा निर्धारित किया जा सकता है:
Stage stage = (Stage) scene.getWindow();
stage.toFront();
Rectangle sceneRect = new Rectangle(
stage.getX() + scene.getX(), stage.getY() + scene.getY(),
scene.getWidth(), scene.getHeight());
आप ऊपर मुहावरा का पालन करें, थ्रेडिंग की सावधान रहना होगा - जैसे कि कोड तक पहुँचने लाइव JavaFX दृश्य केवल JavaFX आवेदन थ्रेड और AWT कोड पर चलाता है केवल एडब्ल्यूटी थ्रेड पर चलता है।
के कारण एक उत्तर अपडेट किया है ऐसा लगता है कि सर्गेई पहले से ही एक समाधान पोस्ट कर रहा है, जबकि मैं अपना उत्तर लिख रहा था - ऐसा लगता है कि दो समाधान बहुत समान हैं ;-) मैं अपना डुप्लिकेट उत्तर छोड़ दूंगा इसमें कुछ उपयोगी लिंक हैं। – jewelsea
- 1. जावाएफएक्स - छवि
- 2. जावाएफएक्स 2
- 3. जावाएफएक्स HTMLEditor - छवि फ़ंक्शन डालें
- 4. जावाएफएक्स 2 वेबव्यू यूआरएल श्रोता
- 5. जावाएफएक्स
- 6. जावाएफएक्स दृश्य पृष्ठभूमि छवि कैसे सेट करें
- 7. जावाएफएक्स -2 - कई शैलियों को सेट करें
- 8. एनीमेशन के लिए जावाएफएक्स 2 सर्कल पथ
- 9. जावाएफएक्स 2: अपने आप से एक चरण (सबस्टेज) बंद करना
- 10. जावाएफएक्स 2: टेबलसेल पंक्ति सूचकांक प्राप्त करें
- 11. जावाएफएक्स में
- 12. जावाएफएक्स
- 13. जावाएफएक्स: गैर जीयूआई थ्रेड में छवि के लिए कैनवास
- 14. जावाएफएक्स में मल्टीथ्रेडिंग यूआई
- 15. जावाएफएक्स?
- 16. जावाएफएक्स
- 17. एक्लिप्स में जावाएफएक्स 2 एसडीके का उपयोग कैसे करें?
- 18. जावाएफएक्स
- 19. जावाएफएक्स में जेड-ऑर्डर
- 20. 2 डी छवि
- 21. जावाएफएक्स: एफएक्सएमएल फ़ाइल
- 22. जावाएफएक्स 2.1
- 23. जावाएफएक्स वेब कैवि में कैशिंग
- 24. जावाएफएक्स 2.x: बार अक्ष दोनों अक्षरों के साथ संख्या
- 25. जावाएफएक्स 2 वेबव्यू के शीर्ष पर ओवरले कैसे बनाएं?
- 26. जेएनएलपी जावाएफएक्स 2 के सही संस्करण को कैसे डाउनलोड करें?
- 27. जावाएफएक्स वेबव्यू
- 28. जावाएफएक्स प्रिंटिंग
- 29. जावाएफएक्स और स्क्रॉलपैन में स्केलिंग
- 30. जावाएफएक्स: स्प्लिटपेन
मैंने नई FX 2.2 स्नैपशॉट सुविधा –