मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

किसी छवि को PNG या JPEG में कैसे सहेजें

उद्देश्य। किसी Image को डिस्क पर स्थायी बनाना। CrossFly दो स्तर प्रदान करता है: सुविधा (टाइमस्टैम्प द्वारा नामित फ़ाइल सहेजता है और पथ लौटाता है) और पूर्ण नियंत्रण (आप OutputStream प्रदान करते हैं)।

सुविधा (स्वचालित रूप से फ़ाइल सहेजता है)

  • String toPng(String... prefix) — <prefix><timestamp>.png नाम से एक PNG सहेजता है। डेस्कटॉप पर Device.homeFolder में रिकॉर्ड करता है; मोबाइल पर /sdcard/ में रिकॉर्ड करता है। सहेजा गया पथ लौटाता है, या त्रुटि की स्थिति में null (त्रुटि को आंतरिक रूप से Debug.handle के माध्यम से संभाला जाता है)। prefix वैकल्पिक है।
  • String toJpg(int... quality) — टाइमस्टैम्प द्वारा नामित एक JPEG सहेजता है। quality वैकल्पिक है (डिफ़ॉल्ट 90); 100 = बिना संपीड़न, 85 = अच्छा संपीड़न, 60 = अधिक संपीड़न लेकिन शोर के साथ। पथ लौटाता है, या त्रुटि में null।

पूर्ण नियंत्रण (आप stream प्रदान करते हैं)

  • void toPng(OutputStream s) throws ImageException, IOException — PNG को stream में रिकॉर्ड करता है। PNG 24 BPP है, या यदि छवि में अल्फा चैनल हो तो 32 BPP।
  • void toJpg(OutputStream s, int quality) throws ImageException, IOException — दी गई गुणवत्ता (0–100) के साथ JPEG को stream में रिकॉर्ड करता है। stream को कॉल द्वारा बंद कर दिया जाता है।

ओवरलोड पर ध्यान दें: toPng(String...)/toJpg(int...) एक फ़ाइल सहेजते हैं और अपवादों को निगल लेते हैं (null लौटाते हैं)। जबकि toPng(OutputStream)/toJpg(OutputStream,int) ImageException/IOException को प्रसारित करते हैं। इसे इस अनुसार चुनें कि आप त्रुटि संभालना चाहते हैं या नहीं।

पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)

package com.exemplo;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import dev.crossfly.ui.*;                     // Window
import dev.crossfly.ui.layout.*;             // VerticalLayout
import dev.crossfly.ui.image.*;              // Image, ImageException
import dev.crossfly.util.*;                  // Debug

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      try {
         Image img = new Image("/sdcard/foto.jpg");   // आपकी पहले से लोड या जनरेट की गई इमेज

         // 1) सुविधा: timestamp वाली फ़ाइल; पथ लौटाता है
         String pngPath = img.toPng("thumb_");   // उदा.: .../thumb_20260706153000.png
         String jpgPath = img.toJpg(85);         // गुणवत्ता 85
         Debug.log("PNG: " + pngPath + " | JPG: " + jpgPath);

         // 2) पूर्ण नियंत्रण: आप गंतव्य तय करते हैं और त्रुटियाँ संभालते हैं
         try (OutputStream out = new FileOutputStream("/sdcard/saida.png")) {
            img.toPng(out);                      // stream कॉल द्वारा बंद होता है; अपवाद प्रसारित करता है
         } catch (ImageException | IOException e) {
            // लेखन/एन्कोडिंग विफलता को संभालें
         }
      } catch (ImageException | IOException e) {
         // स्रोत इमेज लोड करने में विफल
      }
   }
}

नीचे दिया गया अंश केवल मुख्य भाग दिखाता है। चलाने के लिए, इसे ऊपर दिए गए MainWindow ढांचे में रखें।

न्यूनतम अंश

// स्रोत में सत्यापित: Image.java toPng/toJpg — पंक्तियाँ 800, 811, 1454, 1479
import dev.crossfly.ui.image.*;   // Image, ImageException

Image img = /* आपकी पहले से लोड या जनरेट की गई इमेज */;

// 1) सुविधा: timestamp वाली फ़ाइल; पथ लौटाता है
String pngPath = img.toPng("thumb_");   // उदा.: .../thumb_20260706153000.png
String jpgPath = img.toJpg(85);         // गुणवत्ता 85

// 2) पूर्ण नियंत्रण: आप गंतव्य तय करते हैं और त्रुटियाँ संभालते हैं
try (java.io.OutputStream out = new java.io.FileOutputStream("/sdcard/saida.png")) {
   img.toPng(out);                      // stream कॉल द्वारा बंद होता है; अपवाद प्रसारित करता है
} catch (ImageException | java.io.IOException e) {
   // लेखन/एन्कोडिंग विफलता को संभालें
}

और गहराई से जानें

  • संबंधित रेसिपी: thumbnail.md — थंबनेल बनाएँ और फिर इस रेसिपी के साथ सहेजें।
  • संबंधित रेसिपी: screenshot.md — स्क्रीन कैप्चर करें और toPng() के साथ सहेजें।
क्या यह पृष्ठ उपयोगी था?