Bekerja dengan Gambar

Aspose.Words memungkinkan pengguna bekerja dengan gambar dengan cara yang sangat fleksibel. Pada artikel ini, Anda hanya dapat menjelajahi beberapa kemungkinan bekerja dengan gambar.

Memasukkan Gambar

DocumentBuilder menyediakan beberapa kelebihan metode insert_image yang memungkinkan Anda menyisipkan gambar sebaris atau mengambang. Jika gambar adalah metafile EMF atau WMF, maka akan dimasukkan ke dalam dokumen dalam format metafile. Semua gambar lainnya akan disimpan dalam format PNG. Metode masukkan_gambar dapat menggunakan gambar dari berbagai sumber:

  • Dari file atau URL dengan meneruskan parameter string
  • Dari aliran dengan meneruskan parameter Stream
  • Dari array byte dengan meneruskan parameter array byte

Untuk masing-masing metode masukkan_gambar, ada kelebihan lebih lanjut yang memungkinkan Anda menyisipkan gambar dengan opsi berikut:

  • Inline atau floating pada posisi tertentu, misalnya masukkan_gambar
  • Skala persentase atau ukuran khusus; selanjutnya, metode DocumentBuilder.insert_image mengembalikan objek Shape yang baru saja dibuat dan disisipkan sehingga Anda dapat memodifikasi properti Shape lebih lanjut

Memasukkan Gambar Sebaris

Berikan satu string yang mewakili file yang berisi gambar ke insert_image untuk menyisipkan gambar ke dalam dokumen sebagai grafik sebaris.

Contoh kode berikut menunjukkan cara menyisipkan gambar sebaris pada posisi kursor ke dalam dokumen:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

builder.insert_image(docs_base.images_dir + "Logo.jpg")

doc.save(docs_base.artifacts_dir+"WorkingWithImages.document_builder_insert_inline_image.doc")

Memasukkan Gambar Mengambang (Diposisikan Secara Absolut)

Contoh kode berikut menunjukkan cara menyisipkan gambar mengambang dari file atau URL pada posisi dan ukuran tertentu:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

builder.insert_image(docs_base.images_dir + "Logo.jpg",
    aw.drawing.RelativeHorizontalPosition.MARGIN,
    100,
    aw.drawing.RelativeVerticalPosition.MARGIN,
    100,
    200,
    100,
    aw.drawing.WrapType.SQUARE)

doc.save(docs_base.artifacts_dir+"WorkingWithImages.document_builder_insert_floating_image.doc")

Cara Mengekstrak Gambar dari Dokumen

Semua gambar disimpan di dalam node Shape di Document. Untuk mengekstrak semua gambar atau gambar dengan tipe tertentu dari dokumen, ikuti langkah-langkah berikut:

Contoh kode berikut menunjukkan cara mengekstrak gambar dari dokumen dan menyimpannya sebagai file:

Anda dapat mengunduh file template contoh ini dari Di Sini.

Cara Menyisipkan Barcode pada Setiap Halaman Dokumen

Contoh ini menunjukkan Anda untuk menambahkan kode batang yang sama atau berbeda pada semua atau halaman tertentu pada dokumen Word. Tidak ada cara langsung untuk menambahkan barcode pada semua halaman dokumen tetapi Anda dapat menggunakan metode move_to_section, move_to_header_footer dan insert_image untuk berpindah ke bagian atau header/footer mana pun dan menyisipkan gambar barcode seperti yang Anda lihat pada kode berikut.

Contoh kode berikut Menyisipkan gambar barcode pada setiap halaman dokumen.

Kunci Rasio Aspek Gambar

Rasio aspek suatu bentuk geometris adalah rasio ukurannya dalam dimensi yang berbeda. Anda dapat mengunci rasio aspek gambar menggunakan aspect_ratio_locked. Nilai default rasio aspek bentuk bergantung pada ShapeType. Ini adalah True untuk ShapeType.IMAGE dan False untuk tipe bentuk lainnya.

Contoh kode berikut menunjukkan cara bekerja dengan rasio aspek:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

shape = builder.insert_image(docs_base.images_dir + "Logo.jpg")
shape.aspect_ratio_locked = False

doc.save(docs_base.artifacts_dir+"WorkingWithImages.set_aspect_ratio_locked.doc")

Bagaimana Mendapatkan Batasan Bentuk Sebenarnya dalam Poin

Jika Anda menginginkan kotak pembatas sebenarnya dari bentuk seperti yang dirender pada halaman, Anda dapat mencapainya dengan menggunakan properti bounds_in_points.

Contoh kode berikut menunjukkan cara menggunakan properti ini:

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

shape = builder.insert_image(docs_base.images_dir + "Logo.jpg")
shape.aspect_ratio_locked = False

print("\nGets the actual bounds of the shape in points.")
rect = shape.get_shape_renderer().bounds_in_points
print(f"{rect.x}, {rect.y}, {rect.width}, {rect.height}")

Pangkas Gambar

Pemotongan gambar biasanya mengacu pada penghapusan bagian luar gambar yang tidak diinginkan untuk membantu menyempurnakan pembingkaian. Ini juga digunakan untuk menghilangkan beberapa bagian gambar guna meningkatkan fokus pada area tertentu.

Contoh kode berikut menunjukkan cara mencapai hal ini menggunakan Aspose.Words API:

# The path to the documents directory.
inputPath = docs_base.images_dir + "Logo.jpg"
outputPath = docs_base.artifacts_dir + "cropped_logo.jpg"

self.crop_image(inputPath,outputPath, 100, 90, 200, 200)
@staticmethod
def crop_image(inPath : str, outPath : str, left : int, top : int, width : int, height : int) :
    
    doc = aw.Document();
    builder = aw.DocumentBuilder(doc)
    
    croppedImage = builder.insert_image(inPath)
    
    src_width_points = croppedImage.width
    src_height_points = croppedImage.height
    
    croppedImage.width = aw.ConvertUtil.pixel_to_point(width)
    croppedImage.height = aw.ConvertUtil.pixel_to_point(height)
    
    widthRatio = croppedImage.width / src_width_points
    heightRatio = croppedImage.height / src_height_points
    
    if (widthRatio< 1) :
        croppedImage.image_data.crop_right = 1 - widthRatio
    
    if (heightRatio< 1) :
        croppedImage.image_data.crop_bottom = 1 - heightRatio
    
    leftToWidth = aw.ConvertUtil.pixel_to_point(left) / src_width_points
    topToHeight = aw.ConvertUtil.pixel_to_point(top) / src_height_points
    
    croppedImage.image_data.crop_left = leftToWidth
    croppedImage.image_data.crop_right = croppedImage.image_data.crop_right - leftToWidth
    
    croppedImage.image_data.crop_top = topToHeight
    croppedImage.image_data.crop_bottom = croppedImage.image_data.crop_bottom - topToHeight
    
    croppedImage.get_shape_renderer().save(outPath, aw.saving.ImageSaveOptions(aw.SaveFormat.JPEG))

Menyimpan Gambar sebagai WMF

Aspose.Words menyediakan fungsionalitas untuk menyimpan semua gambar yang tersedia dalam dokumen ke format WMF sambil mengonversi DOCX ke RTF.

Contoh kode berikut menunjukkan cara menyimpan gambar sebagai WMF dengan opsi penyimpanan RTF: