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 byte
  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream) de la un flux de intrare
  • add(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 dateCauzaFixare
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 corupteVerificaț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 evaluareTip de returnareDescriere:
getName()StringNumele intern al imaginii.
setName(name)voidStabileşte numele intern.
getUpperLeftRow()intRîndul zero al ancorului din stânga sus.
setUpperLeftRow(row)voidA pus linia de ancorare din partea stângă.
getUpperLeftColumn()intColumna de la baza zero a ancorului din stânga sus.
setUpperLeftColumn(col)voidA pus coloana de ancorare din stânga sus.
getLowerRightRow()intRîndul de la zero al ancorului din dreapta jos.
setLowerRightRow(row)voidStabileşte rândul de ancorare din dreapta jos.
getLowerRightColumn()intColumna de la zero a ancorului din dreapta jos.
setLowerRightColumn(col)voidStabiliţi coloana de ancorare din dreapta jos.
getImageType()ImageTypeValore enum formatul imaginii detectat.
getData()byte[]Byte de imagine brută.
setData(data)voidÎnlocuieşte baiti de imagine brută.
getContentType()StringString de tip conținut MIME.

PictureCollection

Metoda de evaluareTip de returnareDescriere:
getCount()intNumă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)voidElimină imaginea la indexul bazat pe zero.
detectImageType(data)ImageTypeDetectează 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.

Vezi și:

 Română