Görsellerle Çalışmak
Aspose.Words, kullanıcıların görüntülerle çok esnek bir şekilde çalışmasına olanak tanır. Bu makalede görüntülerle çalışmanın yalnızca bazı olanaklarını keşfedebilirsiniz.
Resim Ekleme
DocumentBuilder, satır içi veya kayan bir görüntü eklemenize olanak tanıyan insert_image yönteminin çeşitli aşırı yüklemelerini sağlar. Görüntü bir EMF veya WMF meta dosyasıysa, belgeye meta dosyası biçiminde eklenecektir. Diğer tüm görseller PNG formatında saklanacaktır. Resim ekle yöntemi farklı kaynaklardan gelen görselleri kullanabilir:
- Bir dosyadan veya
URL
‘ten bir dize parametresi ileterek - Bir
Stream
parametresini ileterek bir akıştan - Bir bayt dizisinden bir bayt dizisi parametresi ileterek
Resim ekle yöntemlerinin her biri için, aşağıdaki seçeneklere sahip bir görüntü eklemenizi sağlayan başka aşırı yüklemeler vardır:
- Resim ekle gibi belirli bir konumda satır içi veya kayan
- Yüzde ölçeği veya özel boyut; ayrıca DocumentBuilder.insert_image yöntemi, yeni oluşturulmuş ve eklenen bir Shape nesnesini döndürür; böylece Shape‘nin özelliklerini daha fazla değiştirebilirsiniz
Satır İçi Görüntü Ekleme
Görüntüyü belgeye satır içi grafik olarak eklemek için, görüntüyü içeren bir dosyayı temsil eden tek bir dizeyi insert_image‘e iletin.
Aşağıdaki kod örneği, imleç konumunda satır içi görüntünün bir belgeye nasıl ekleneceğini gösterir:
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")
Kayan (Kesinlikle Konumlandırılmış) Görüntü Ekleme
Aşağıdaki kod örneği, bir dosyadan veya URL
‘ten belirli bir konuma ve boyuta kayan görüntünün nasıl ekleneceğini gösterir:
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")
Bir Belgeden Görüntüler Nasıl Çıkarılır
Tüm görüntüler bir Document‘deki Shape düğümlerinde saklanır. Belgeden tüm görüntüleri veya belirli türdeki görüntüleri çıkarmak için şu adımları izleyin:
- Tüm Shape düğümlerini seçmek için Document.get_child_nodes yöntemini kullanın.
- Ortaya çıkan düğüm koleksiyonlarını yineleyin.
- Shape.has_image boole özelliğini kontrol edin.
- Shape.image_data özelliğini kullanarak görüntü verilerini çıkarın.
- Görüntü verilerini bir dosyaya kaydedin.
Aşağıdaki kod örneği, bir belgeden görüntülerin nasıl çıkarılacağını ve bunların dosya olarak nasıl kaydedileceğini gösterir:
Bu örneğin şablon dosyasını Burada‘ten indirebilirsiniz.
Bir Belgenin Her Sayfasına Barkod Nasıl Eklenir?
Bu örnek, bir Word belgesinin tüm veya belirli sayfalarına aynı veya farklı barkodları ekleyebileceğinizi gösterir. Bir belgenin tüm sayfalarına barkod eklemenin doğrudan bir yolu yoktur ancak aşağıdaki kodda görebileceğiniz gibi herhangi bir bölüme veya üstbilgi/altbilgiye gitmek ve barkod resimlerini eklemek için move_to_section, move_to_header_footer ve insert_image yöntemlerini kullanabilirsiniz.
Aşağıdaki kod örneği Bir belgenin her sayfasına bir barkod görüntüsü ekler.
Görüntünün En Boy Oranını Kilitle
Geometrik bir şeklin en boy oranı, farklı boyutlardaki boyutlarının oranıdır. aspect_ratio_locked‘i kullanarak görüntünün en boy oranını kilitleyebilirsiniz. Şeklin en boy oranının varsayılan değeri ShapeType‘ye bağlıdır. ShapeType.IMAGE için True
, diğer şekil türleri için False
‘dur.
Aşağıdaki kod örneği en boy oranıyla nasıl çalışılacağını gösterir:
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")
Noktalarda Gerçek Şekil Sınırları Nasıl Elde Edilir
Şeklin gerçek sınırlayıcı kutusunun sayfada işlendiği şekliyle olmasını istiyorsanız bunu bounds_in_points özelliğini kullanarak başarabilirsiniz.
Aşağıdaki kod örneği bu özelliğin nasıl kullanılacağını gösterir:
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}")
Resimleri Kırp
Bir görüntünün kırpılması genellikle çerçevelemenin iyileştirilmesine yardımcı olmak için görüntünün istenmeyen dış kısımlarının kaldırılması anlamına gelir. Ayrıca belirli bir alana odaklanmayı artırmak amacıyla görüntünün bazı bölümlerinin kaldırılması için de kullanılır.
Aşağıdaki kod örneği, Aspose.Words API kullanılarak bunun nasıl başarılacağını gösterir:
# 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))
Görüntüleri WMF Olarak Kaydetme
Aspose.Words, DOCX’i RTF’ye dönüştürürken bir belgedeki mevcut tüm görüntüleri WMF biçiminde kaydetme işlevi sağlar.
Aşağıdaki kod örneği, görüntülerin RTF kaydetme seçenekleriyle WMF olarak nasıl kaydedileceğini gösterir: