Resimler ile çalışmak
Resimler ile çalışmak
Aspose.Cells FOSS for Java allows you to embed images directly into çalışma sayfası hücreleri ve mevcut resimleri geri almak veya kaldırmak. resimler Yönetilen yoluyla PictureCollection Her birinin gösterdiği Worksheet,ve Her biri Picture nesne, görüntü verilerine erişim sağlar, ankerleri pozisyonu, tespit edilmiş görüntü tipi ve MIME içerik tipi.
Overview
Her çalışma sayfası kendi resimlerini gösterir. Worksheet.getPictures(), A’ya geri dönen PictureCollection.Bir byte’den resim ekleyebilirsiniz. Array, bir InputStream, ya da bir dosya yolu. koleksiyon yardımcı sağlar -Kuru byte görüntü türünü tespit etme yöntemleri, dosyayı çözmek için görüntü verilerinden uzantı ve MIME içerik türüne haritalama uzanta.
Bir çalışma sayfasındaki resimlere erişmek
Retrade için PictureCollection yolda Worksheet.getPictures().Kullanım PictureCollection.getCount() Kaç fotoğrafın var olduğunu belirlemek için. Bireysel resimler sıfır tabanlı indekse ile erişilebilir PictureCollection.get(index).
Bir resim eklemek
Üç aşırı yükleme PictureCollection.add() Her biri mevcut, her biri Yeni eklenen resmin sıfır tabanlı endeksini geri getirmek:
add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, imageData)Bir byte arrayadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream)Bir InputStream’danadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, fileName)Bir dosya yolundan
// 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);Resim Özellikleri Okuma
Bir kez tuttuğunuzda bir Picture Anker pozisyonunu okuyun, kaynaklı görüntü verileri, tespit edilmiş görünüm tipi ve MIME içerik tipi:
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’ten Görüntü Türü Keşfedin
Kullanım PictureCollection.detectImageType(data) belirlemek için, ImageType Bir byte array değerini ilk olarak yerleştirmeden.
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);Bir resim kaldırmak
Kullanım PictureCollection.removeAt(index) Bir resim ile silinmek için 0 basılı indeksleri:
ws.getPictures().removeAt(0);İpuçları ve En İyi Uygulamalar
- Kullanmak için
add(..., imageData)Bu kadar yüklü olduğunuzda, zaten bahteleriniz var. hafıza; büyük dosyaları tamamen yüklemek için akış aşırı yük kullanın. - Call
PictureCollection.detectImageType(data)Görüntüyi doğrulamak için Birleşmeden önce formatı. - Anchor satırları ve sütunları sıfır tabanlı göstergelerdir.
Picture.getName()Bir fil adı değil, bir iç kimlik kaynağı geri getirir.- Resimler XLSX yuvarlak yolda saklanır.
ortak sorunlar
| Issue | Cause | Fix |
|---|---|---|
getCount() 0 ekleyerek geri döner | Ekleyin bitmeden önce akış kapandı | InputStream açık ve okunabilir olduğundan emin olun. |
ImageType.UNKNOWN Geri Dönüş | Desteklenmemiş veya yolsuz görüntü verileri | Dosyanın geçerli bir PNG, JPEG, GIF, BMP veya TIFF olduğunu kontrol edin. |
| Görüntü pozisyonu yanlış görünüyor | Sütun/kolon göstergeleri yanlıştır | Tüm anchor parametreleri için sıfır tabanlı göstergeler kullanın. |
FAQ
Hangi görüntü biçimleri yerleştirmek için desteklenir?
O zamanlar ImageType enum PNG, JPEG, GIF, BMP, TIFF ve EMF’yi kapsamaktadır. İkili veriler olarak birleştirilebilir, ancak bir ImageType • Üzerine UNKNOWN.
Bir içerikli resmin dosya uzantısını nasıl elde edebilirim?
Call PictureCollection.extensionFromData(picture.getData()) ile de Fotoğraflar çamurlu.
Mevcut bir resim verilerini değiştirebilir miyim?
Evet. geri dönüş yapın Picture yolda get(index) ve çağrı setData(bytes).
Bir resim nasıl bulabilirim?
Tüm resimlerin üzerine bakın getCount() ve get(index) Karşılaştırma Picture.getName().
Resimler diğer formatta kaydedildiğinde muhafaza edilir?
Resim koruma hedef formatına bağlıdır. XLSX yuvarlak yol tamamen desteklenir.
API Referans Özetleri
Picture
| Method | Geri Dönüş Türü | Description |
|---|---|---|
getName() | String | Resmin iç adı. |
setName(name) | void | İç adı koymak. |
getUpperLeftRow() | int | 0 basılı üst sol anchor satır. |
setUpperLeftRow(row) | void | Yukarıdaki ankerin sol kısmını yapıştırın. |
getUpperLeftColumn() | int | 0 tabanlı sütun, üst sol anchor. |
setUpperLeftColumn(col) | void | Yukarıdaki ankar sütunu oluşturun. |
getLowerRightRow() | int | 0’a dayalı alt sağ anchor satır. |
setLowerRightRow(row) | void | sağ alt ankar çizgisi yapıştırın. |
getLowerRightColumn() | int | 0 tabanlı sütun sağ alt ankor. |
setLowerRightColumn(col) | void | sağ alt kısmı ankar sütunu oluşturur. |
getImageType() | ImageType | Görüntü format enum değerini tespit eder. |
getData() | byte[] | Yakıt görüntüsü bytes. |
setData(data) | void | Yakıt görüntüsü byteyi değiştirir. |
getContentType() | String | MIME içerik türü string. |
PictureCollection
| Method | Geri Dönüş Türü | Description |
|---|---|---|
getCount() | int | Çalışma sayfasındaki resim sayısı. |
get(index) | Picture | Resim sıfır tabanlı indekse geri döner. |
add(...) | int | Bir görüntü içerir; sıfır tabanlı endeksini geri getirir. |
removeAt(index) | void | 0 tabanlı indekslere göre görüntü kaldırın. |
detectImageType(data) | ImageType | Görüntü biçimini ham bytelerden tespit eder. |
extensionFromData(data) | String | Dosya uzantısını görüntü verileri için geri getirir. |
contentTypeFromExtension(ext) | String | Dosya uzantısı için MIME tipi iade edilir. |