चित्रों के साथ काम करना

चित्रों के साथ काम करना

Aspose.Cells FOSS for Java allows you to embed images directly into कार्यपत्रक कोशिकाओं और प्राप्त या हटाने के लिए मौजूदा तस्वीरें. चित्रों में से एक है प्रबंधित के माध्यम से PictureCollection हर एक द्वारा प्रस्तुत Worksheet,और हर एक Picture ऑब्जेक्ट छवि डेटा तक पहुंच प्रदान करता है, इसके एंकार स्थिति, इसकी खोज की गई छवि प्रकार और इसकी MIME सामग्री प्रकार।.


अवलोकन

प्रत्येक कार्यपत्रक अपनी तस्वीरों को प्रस्तुत करता है Worksheet.getPictures(), जिसके लिए वापस लौटें PictureCollection.आप एक बाइट से तस्वीरें जोड़ सकते हैं आर्मी, एक InputStream, या फ़ाइल मार्ग. संग्रह सहायक प्रदान करता है कच्चे बाइट्स से छवि प्रकार का पता लगाने के तरीके, फ़ाइल को हल करने के लिए छवि डेटा से एक्सटेंशन, और MIME सामग्री प्रकार के लिए मैप एक्सटीेंेशन।.


एक कार्यपत्रक पर छवियों तक पहुंचने के लिए

रिटर्न करें PictureCollection के माध्यम से Worksheet.getPictures().उपयोग करें PictureCollection.getCount() यह निर्धारित करने के लिए कि कितनी तस्वीरें मौजूद हैं।. व्यक्तिगत छवियों को सील-आधारित सूचकांक के माध्यम से उपलब्ध किया जाता है PictureCollection.get(index).


एक तस्वीर जोड़ना

तीनों का अधिग्रहण PictureCollection.add() उपलब्ध है, प्रत्येक नए जोड़े गए चित्र के शून्य-आधारित सूचकांक को वापस करने के लिए:

  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, imageData) एक बाइट आरे से
  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream) एक InputStream से
  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, fileName) एक फ़ाइल मार्ग से
// Embed an image from bytes into cells A1:C5
byte[] imgData = Files.readAllBytes(Paths.get("logo.png"));
int idx = ws.getPictures().add(0, 0, 4, 2, imgData);

पढ़ने की तस्वीरें

जब आप एक को पकड़ लेते हैं Picture संदर्भ, इसके एंकोर स्थिति को पढ़ें, कच्चे छवि डेटा, पहचाने गए छवियों के प्रकार और MIME सामग्री के रूप में:

PictureCollection pics = ws.getPictures();
for (int i = 0; i < pics.getCount(); i++) {
    Picture p = pics.get(i);
    System.out.printf("Name=%s type=%s anchor=[%d,%d]-[%d,%d]%n",
        p.getName(), p.getImageType(),
        p.getUpperLeftRow(), p.getUpperLeftColumn(),
        p.getLowerRightRow(), p.getLowerRightColumn());
}

Raw Bytes से छवि प्रकार का पता लगाना

उपयोग करें PictureCollection.detectImageType(data) यह निर्धारित करने के लिए ImageType एक बाइट आरे के मूल्य का एक अंक, इसे पहले शामिल किए बिना।.

PictureCollection pics = ws.getPictures();
byte[] data = Files.readAllBytes(Paths.get("chart.png"));
ImageType type = pics.detectImageType(data);
String ext  = pics.extensionFromData(data);
String mime = pics.contentTypeFromExtension(ext);
System.out.printf("type=%s ext=%s mime=%s%n", type, ext, mime);

एक तस्वीर हटाने के लिए

उपयोग करें PictureCollection.removeAt(index) एक तस्वीर को अपने द्वारा हटाने के लिए 0 आधारित सूचकांक:

ws.getPictures().removeAt(0);

टिप्स और सर्वश्रेष्ठ अभ्यास

  • का उपयोग करें add(..., imageData) जब आप पहले से ही बाइट्स के साथ हैं तो अतिरंजित करें स्मृति में; बड़े फ़ाइलों को पूरी तरह से लोड करने से बचने के लिए प्रवाह अतिरंजित का उपयोग करें।.
  • Call PictureCollection.detectImageType(data) तस्वीर को सत्यापित करने के लिए प्रारूप से पहले।.
  • एंकोर पंक्तियां और स्तंभ शून्य-आधारित सूचकांक हैं।.
  • Picture.getName() एक आंतरिक पहचानकर्ता, मूल फ़ाइल नाम नहीं लौटाता है।.
  • तस्वीरें XLSX पर रखा गया है।.

सामान्य मुद्दे

IssueCauseफिक्स करें
getCount() 0 के बाद वापस आते हैंप्रवाह समाप्त होने से पहले बंद हो गया थासुनिश्चित करें कि इनपुटस्ट्रीम खुला और पढ़ा जा सकता है
ImageType.UNKNOWN लौटेंअपरिवर्तित या भ्रष्ट छवि डेटाफ़ाइल की जांच करें कि यह एक वैध PNG, JPEG, GIF, BMP या TIFF है।
तस्वीर गलत दिखती है।रूट / स्तंभ सूचकांक गलत हैंसभी एंक्रो पैरामीटर के लिए शून्य-आधारित सूचकांक का उपयोग करें

FAQ

किस प्रकार के आकार का समर्थन किया जाता है?

के लिए ImageType enum PNG, JPEG, GIF, BMP, TIFF और EMF को कवर करता है। प्रारूपों को बाइनरी डेटा के रूप में शामिल किया जा सकता है लेकिन एक ImageType के UNKNOWN.

मैं एक अंतर्निहित छवि के फ़ाइल विस्तार कैसे प्राप्त करता हूं?

Call PictureCollection.extensionFromData(picture.getData()) के साथ कच्चे बाइट्स की तस्वीरें.

क्या मैं एक मौजूदा छवि डेटा को बदल सकता हूं?

हाँ, वापस ले लो Picture के माध्यम से get(index) और कॉल करें setData(bytes).

नाम के अनुसार एक तस्वीर कैसे मिलती है?

सभी तस्वीरों के साथ जुड़ें getCount() और get(index) तुलना करें Picture.getName().

क्या तस्वीरें अन्य प्रारूपों में संग्रहीत करते समय संरक्षित हैं?

छवि संरक्षण लक्ष्य प्रारूप पर निर्भर करता है. XLSX गोल-ट्रिप पूरी तरह से समर्थित है।.


API संदर्भ सारांश

Picture

Methodवापसी प्रकारDescription
getName()Stringचित्र का आंतरिक नाम है।.
setName(name)voidआंतरिक नाम से जुड़ें।.
getUpperLeftRow()intऊपरी बाईं ओर एंकर की शून्य-आधारित पंक्ति।.
setUpperLeftRow(row)voidऊपरी बाईं ओर एंकर रैली रखें।.
getUpperLeftColumn()intऊपरी बाईं ओर एंकर के शून्य-आधारित स्तंभ।.
setUpperLeftColumn(col)voidऊपरी बाईं ओर एंकर कोर सेट करें।.
getLowerRightRow()intनीचे दाईं ओर एंकर की शून्य-आधारित पंक्ति।.
setLowerRightRow(row)voidनीचे दाईं ओर एंकर रैख लगाएं।.
getLowerRightColumn()intनीचे दाईं ओर एंकर के शून्य-आधारित स्तंभ।.
setLowerRightColumn(col)voidनीचे दाईं ओर एंकर कोर सेट करें।.
getImageType()ImageTypeइमेज कॉपीरइट Enum Value.
getData()byte[]रॉड इमेज बाइट्स।.
setData(data)voidकच्चे छवि बाइट्स को बदलने के लिए।.
getContentType()StringMIME सामग्री प्रकार स्ट्रिंग।.

PictureCollection

Methodवापसी प्रकारDescription
getCount()intकार्यपत्रक पर चित्रों की संख्या।.
get(index)Pictureयह तस्वीर को शून्य-आधारित सूचकांक पर वापस लाता है।.
add(...)intयह एक छवि को शामिल करता है; इसकी शून्य-आधारित सूचकांक वापस लाता है।.
removeAt(index)voidयह तस्वीर शून्य-आधारित सूचकांक पर हटा दी जाती है।.
detectImageType(data)ImageTypeकच्चे बाइट्स से छवि प्रारूप का पता लगाता है।.
extensionFromData(data)Stringफ़ाइल विस्तार को छवि डेटा के लिए वापस करता है।.
contentTypeFromExtension(ext)Stringफ़ाइल विस्तार के लिए MIME टाइप वापस करता है।.

यह भी देखें

 हिन्दी