Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

छवि को स्मृति में ब्लॉब में कनवर्ट करना

java.awt.Image काफी सरल है। यह कोई ऐसा साधन प्रदान नहीं करता है जिसके द्वारा छवि को लिखा/सहेजा जा सके और न ही यह छवि के अंतर्निहित पिक्सेल डेटा तक पहुंच प्राप्त करने का कोई साधन प्रदान करता है।

पहला कदम, java.awt.Image . को कनवर्ट करना है किसी ऐसी चीज़ के लिए जो ImageIO संभाल सकना। यह आपको छवि डेटा को बाहर लिखने की अनुमति देगा...

ImageIO एक RenderedImage requires की आवश्यकता है क्योंकि यह प्राथमिक छवि स्रोत है। BufferedImage डिफ़ॉल्ट पुस्तकालयों के भीतर इस इंटरफ़ेस का एकमात्र कार्यान्वयन है...

दुर्भाग्य से, एक से दूसरे में कनवर्ट करने का कोई आसान तरीका नहीं है। सौभाग्य से, यह कठिन नहीं है।

Image img = ...;

BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bi.createGraphics();
g2d.drawImage(img, 0, 0, null);
g2d.dispose();

मूल रूप से, यह सिर्फ मूल java.awt.Image . को पेंट करता है BufferedImage . पर

इसके बाद, हमें इमेज को किसी तरह से सेव करना होगा ताकि यह एक InputStream उत्पन्न कर सके ...

यह इष्टतम से थोड़ा कम है, लेकिन काम पूरा हो जाता है।

ByteArrayOutputStream baos = null;
try {
    baos = new ByteArrayOutputStream();
    ImageIO.write(bi, "png", baos);
} finally {
    try {
        baos.close();
    } catch (Exception e) {
    }
}
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());

मूल रूप से, हम इमेज को ByteArrayOutputStream . पर लिखते हैं और एक ByteArrayInputStream उत्पन्न करने के लिए परिणाम का उपयोग करें

अब। यदि स्मृति एक समस्या है या छवि काफी बड़ी है, तो आप पहले छवि को File . पर लिख सकते हैं और उसके बाद बस File पढ़ें किसी प्रकार के InputStream . के माध्यम से वापस इसके बजाय...

अंत में, हम InputStream . सेट करते हैं आवश्यक कॉलम में...

PreparedStatement stmt = null;
//...    
stmt.setBlob(parameterIndex, bais);

और बूँद तुम्हारे चाचा...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ActiveMQ 5.8:JDBC ड्राइवर वर्ग 'oracle.jdbc.driver.OracleDriver' लोड नहीं कर सकता

  2. Oracle के लिए sql इन्सर्ट जनरेट करना

  3. Php oracle क्लाइंट oci8 की स्थापना में क्या गलत है?

  4. त्रुटि प्राप्त करना ORA-00909:तर्कों की अमान्य संख्या

  5. AWS EC2 से AWS RDS में Oracle डेटाबेस माइग्रेट करना, भाग 4