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