العمل مع الصور

العمل مع الصور

Aspose.Cells FOSS for Java allows you to embed images directly into خلايى ورقة العمل واسترداد أو إزالة الصور الموجودة. تم إدارتها من خلال PictureCollection يتعرض لكل واحد منهم Worksheet,، و كل واحد منكم Picture يمنح الجسم الوصول إلى بيانات الصورة، مرساة لها الموقع، ونوع الصورة التي تم الكشف عنها، وأنواع محتوى MIME.


نظرة عامة

كل ورقة عمل تعرض صورها من خلال Worksheet.getPictures(), والتي تعيد a 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());
}

الكشف عن نوع الصورة من البايتات الخام

استخدام PictureCollection.detectImageType(data) لتحديد ImageType قيمة enum من صفحة بايت دون تضمينها أولاً.

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) لحذف صورة بواسطة مؤشر على أساس الصفر:

ws.getPictures().removeAt(0);

نصائح وأفضل الممارسات

  • استخدموا الـ add(..., imageData) الإفراط في التحميل عندما يكون لديك البايت بالفعل في الذاكرة، استخدم سيل الحمل الزائد لتجنب تحميل الملفات الكبيرة بالكامل.
  • اتصلوا PictureCollection.detectImageType(data) لتأكيد الصورة التنسيق قبل الإدراج.
  • الصفوف والعمود المربطة هي مؤشرات قائمة على صفر.
  • Picture.getName() يعيد معرف داخلي وليس اسم الملف الأصلي.
  • الصور محفوظة على XLSX ذهاب وآخر.

القضايا المشتركة

القضيةالسببإصلاح
getCount() يعيد 0 بعد الإضافةتم إغلاق التدفق قبل الإضافة.تأكد من أن InputStream مفتوح وقابل للقراءة
ImageType.UNKNOWN عُودتبيانات الصورة غير المدعومة أو المفسدةتحقق من أن الملف PNG، JPEG، GIF، BMP أو TIFF صالح
الموقع الصور يبدو خاطئاًفهرس الصفوف/العمدة غير صحيحاستخدام المؤشرات القائمة على الصفر لجميع معايير المرساة.

FAQ

ما هي صيغ الصور المدعومة للدمج؟?

المجلس الوزاري ImageType يغطي enum PNG و JPEG و GIF و BMP و TIFF و EMF. غير ذلك يمكن أن يتم تضمين الصيغ كبيانات ثنائية ولكن لديها ImageType من UNKNOWN.

كيف أحصل على تمديد ملف الصورة المضمنة؟?

اتصلوا PictureCollection.extensionFromData(picture.getData()) مع المجموعة صورة بايتات خام.

هل يمكنني استبدال بيانات صورة موجودة؟?

نعم، إسترد المكالمة. Picture عبر get(index) و اتصل به setData(bytes).

كيف أجد صورة بالاسم؟?

التكرار على جميع الصور مع getCount() و get(index) و مقارنة Picture.getName().

هل الصور تُحافظ على حفظها عند الحفاظ عليها في صيغ أخرى؟?

الحفاظ على الصورة يعتمد على تنسيق الهدف. XLSX الدور الثاني مدعوم بالكامل.


إشارة API

صورة

طريقةنوع الإرجاعوصف
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.
getData()byte[]بايتات الصورة الخام.
setData(data)voidيستبدل بايت الصورة الخام.
getContentType()Stringنوع المحتوى MIME سلسلة.

PictureCollection

طريقةنوع الإرجاعوصف
getCount()intعدد الصور على ورقة العمل.
get(index)Pictureيعيد الصورة عند المؤشر المستند إلى صفر.
add(...)intيضيف صورة، يعيد مؤشرها القائم على الصفر.
removeAt(index)voidيزيل الصورة في المؤشر المستند إلى صفر.
detectImageType(data)ImageTypeيكتشف شكل الصورة من البايتات الخام.
extensionFromData(data)Stringيعيد تمديد الملف للبيانات الصورة.
contentTypeFromExtension(ext)Stringيعيد نوع MIME لموسع ملف.

انظر أيضا

 العربية