Lucrarea cu imagini
Lucrarea cu imagini
Aspose.Cells FOSS for Java allows you to embed images directly into Celulele fișei de lucru și recupera sau elimina imaginile existente. Imaginile sunt gestionate prin intermediul Comitetului de PictureCollection expuse de fiecare dintre acestea. Worksheet, și fiecare Picture Obiectul oferă acces la datele imaginii, ancorarea sa poziția, tipul imaginii detectate și tipul de conținut MIME.
Prezentare generală
Fiecare fişa de lucru expune imaginile prin Worksheet.getPictures(), care returnează o PictureCollection.Poţi adăuga imagini de la un byte . o matrice, un InputStream, sau o cale de fişier. Colectia oferă ajutor pentru a găsi un mod de a folosi datele din colecţie, care să le poată utiliza în funcţiune. metode de detectare a tipului imaginii din bați cruzi, rezolvarea fișierului extensie de la datele imaginii și extensia pentru cartografiere către tipul de conținut MIME.
Accesibilitatea imaginilor pe o foaie de lucru
Obţineţi… PictureCollection prin intermediul Worksheet.getPictures().- Foloseste-l . PictureCollection.getCount() pentru a determina câte poze sunt prezente. Imaginile individuale sunt accesibile prin index zero-based prin intermediul PictureCollection.get(index).
Adăugarea unei imagini
Trei supraîncărcări de PictureCollection.add() sunt disponibile, fiecare returnarea indicelui pe bază de zero al imaginii nou adăugate:
add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, imageData)dintr-un tablou de byteadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream)de la un flux de intrareadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, fileName)de pe o cale a fișierului
// 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);Citește proprietățile imaginii
Odată ce ai o … Picture referință, citiți poziția de ancorare;, Datele de imagine brută, tipul imaginii detectate și tipul de conținut 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());
}Detectarea tipului de imagine din byte brute
Utilizare: PictureCollection.detectImageType(data) pentru a determina ImageType valoarea enum a unui matrice de byte fără să-l încorporeze mai întâi.
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);Eliminarea unei imagini
Utilizare: PictureCollection.removeAt(index) pentru a șterge o imagine de către Indicele pe bază de zero:
ws.getPictures().removeAt(0);Sfaturi şi cele mai bune practici
- Foloseşte-l.
add(..., imageData)supraîncărcare atunci când aveți deja baiti în memorie; folosiți fluxul de supraîncărcare pentru a evita încărcarea completă a fișierelor mari. - Sună-mă.
PictureCollection.detectImageType(data)pentru a valida imaginea formatare înainte de încorporare. - Rădăcinile și coloanele de ancorare sunt indici bazati pe zero.
Picture.getName()returnă un identificator intern, nu numele original al fișierului.- Fotografiile sunt păstrate pe XLSX.
Probleme comune
| Numărul de date | Cauza | Fixare |
|---|---|---|
getCount() returnă 0 după adăugare. | Stream a fost închis înainte de completarea adăugării. | Asigură-te că fluxul de intrări este deschis și lizibil. |
ImageType.UNKNOWN returnată | Date de imagine neînsoțite sau corupte | Verificați fișierul este un PNG, JPEG, GIF, BMP sau TIFF valabil |
| Poziţia imaginii pare greşită. | Indicele rândurilor/columnelor sunt incorecte. | Utilizați indicii bazate pe zero pentru toți parametrii de ancorare. |
FAQ
Ce formate de imagine sunt suportate pentru încorporare?
În ceea ce priveşte ImageType enum acoperă PNG, JPEG, GIF, BMP, TIFF și EMF. Alte Formatele pot fi încorporate ca date binare, dar au o formă de datelor. ImageType din: UNKNOWN.
Cum obţin extensiunea fişierului unei imagini încorporate?
Sună-mă. PictureCollection.extensionFromData(picture.getData()) cu o imagine de byte crude.
Pot să înlocuiesc o imagine existentă?
Da, să-l recuperez. Picture prin intermediul get(index) şi sună-l. setData(bytes).
Cum găsesc o poză după nume?
Iterate peste toate imaginile cu getCount() și de: get(index) şi compară Picture.getName().
Sunt păstrate imaginile atunci când sunt salvate în alte formate?
Conservarea imaginii depinde de formatul țintă. XLSX-uri sunt complet suportate.
Rezultatele de la data aplicării.
Imagini
| Metoda de evaluare | Tip de returnare | Descriere: |
|---|---|---|
getName() | String | Numele intern al imaginii. |
setName(name) | void | Stabileşte numele intern. |
getUpperLeftRow() | int | Rîndul zero al ancorului din stânga sus. |
setUpperLeftRow(row) | void | A pus linia de ancorare din partea stângă. |
getUpperLeftColumn() | int | Columna de la baza zero a ancorului din stânga sus. |
setUpperLeftColumn(col) | void | A pus coloana de ancorare din stânga sus. |
getLowerRightRow() | int | Rîndul de la zero al ancorului din dreapta jos. |
setLowerRightRow(row) | void | Stabileşte rândul de ancorare din dreapta jos. |
getLowerRightColumn() | int | Columna de la zero a ancorului din dreapta jos. |
setLowerRightColumn(col) | void | Stabiliţi coloana de ancorare din dreapta jos. |
getImageType() | ImageType | Valore enum formatul imaginii detectat. |
getData() | byte[] | Byte de imagine brută. |
setData(data) | void | Înlocuieşte baiti de imagine brută. |
getContentType() | String | String de tip conținut MIME. |
PictureCollection
| Metoda de evaluare | Tip de returnare | Descriere: |
|---|---|---|
getCount() | int | Numărul de imagini din fișă. |
get(index) | Picture | Întoarce imaginea la indexul bazat pe zero. |
add(...) | int | Încorporează o imagine; returnează indexul bazat pe zero. |
removeAt(index) | void | Elimină imaginea la indexul bazat pe zero. |
detectImageType(data) | ImageType | Detectează formatul imaginii din bați cruzi. |
extensionFromData(data) | String | Întoarce extensia fişierului pentru datele imaginii. |
contentTypeFromExtension(ext) | String | Întoarce tipul MIME pentru o extensie de fișier. |