Bir resmi kırpmak ve birden fazla formata dışa aktarmak, küçük resimler, ön izlemeler veya özel varlıklar oluştururken yaygın bir gereksinimdir. Bu kılavuz, Aspose.Imaging for Python ve RasterImageExporter sınıfını kullanarak bu işlemi nasıl gerçekleştireceğinizi gösterir ve clip and export images in Python anahtar kelimesine odaklanır.
Anahtar Çıkarımlar
- RasterImageExporter bir dikdörtgeni kırpabilir ve sonucu desteklenen herhangi bir görüntü formatına yazabilir.
- Aynı kırpma dikdörtgeni, kaynak görüntüyü yeniden yüklemeden onlarca formatta yeniden kullanılabilir.
- Kaydedilen görüntü boyutunu doğrulamak, kırpma işleminin başarılı olduğunu garanti eder.
- Kaydetme seçenekleri nesnelerinin klonlanması, formatlar arası yan etkileri önler.
- Geçici bir lisans, API’yi değerlendirirken tam işlevselliği etkinleştirir.
Neden Görüntüyü Kırpıp Dışa Aktarıyoruz
Geliştiriciler genellikle bir görüntüden tek bir kırpılmış bölgeye ihtiyaç duyarlar, ancak bu bölgeyi farklı platformlar için çeşitli dosya türlerinde sunmaları gerekir. Bu yetenek olmadan, her format için görüntüyü ayrı ayrı yüklemek, kırpmak ve kaydetmek zorunda kalırdınız; bu da I/O ve CPU yükünü artırır. RasterImageExporter, aynı kırpma dikdörtgenini her çıktı formatına tek bir döngüde uygulayarak iş akışını basitleştirir, zaman tasarrufu sağlar ve kod karmaşıklığını azaltır.
Aspose.Imaging for Python ile Başlarken
İlk olarak, Aspose.Imaging paketini pip kullanarak yükleyin:
pip install aspose-imaging-python-net
Detaylı belgeler için, ürün sayfası. Kütüphane, .NET entegrasyonunu Python.NET aracılığıyla destekleyen herhangi bir Python ortamında çalışır.
Görüntüleri Kesme ve Birden Çok Formatta Dışa Aktarma
Aşağıda, bir dizi test görüntüsünü yükleyen, bir kırpma dikdörtgeni tanımlayan ve kırpılan bölgeyi on bir farklı formata kaydeden eksiksiz, bağımsız bir örnek bulunmaktadır.
Aşağıdaki örnek, bir dikdörtgeni kırpmayı ve sonucu Python kullanarak birden fazla formata dışa aktarmayı gösterir.
import os
from aspose.imaging import Image, Rectangle
from aspose.imaging.imageoptions import *
from aspose.imaging.fileformats.tiff.enums import TiffExpectedFormat
base_dir = "testdata"
out_dir = os.path.join(base_dir, "output")
if not os.path.exists(out_dir):
os.mkdir(out_dir)
files = [
"decHex_16Bpp555.bmp",
"2086.gif",
"3.jpg",
"1.png",
"bi_CCITT3_2d.tif",
"light.ico",
"Input.jp2",
"ExifChunk.webp",
"0008.DCM",
"src-base-indexed.tga",
"BigTiff.tiff.tiff"
]
save_exts = ["bmp", "gif", "jpeg", "png", "tiff", "ico", "jp2", "webp", "dicom", "tga", "bigtiff"]
save_options = [
BmpOptions(),
GifOptions(),
JpegOptions(),
PngOptions(),
TiffOptions(TiffExpectedFormat.TIFF_DEFLATE_RGB),
IcoOptions(),
Jpeg2000Options(),
WebPOptions(),
DicomOptions(),
TgaOptions(),
BigTiffOptions(TiffExpectedFormat.TIFF_DEFLATE_RGB)
]
assert len(files) == len(save_exts)
assert len(files) == len(save_options)
# Define the Clipping Rectangle: (X, Y, Width, Height)
out_rect = Rectangle(10, 15, 100, 100)
error_list = []
for file in files:
file_path = os.path.join(base_dir, file)
# Load the source image once
with Image.load(file_path) as image:
for i in range(len(save_exts)):
out_file = os.path.join(out_dir, file + "_clipped." + save_exts[i])
# Clone the format‑specific options and apply the clipping rectangle
image.save(out_file, save_options[i].clone(), out_rect)
# Verify that the saved image has the expected size
can_remove = True
with Image.load(out_file) as test_image:
if out_rect.size != test_image.size:
can_remove = False
error_list.append(
"Sizes (exp = {0}, real = {1}) are not equal! Input file: {2}, Output file: {3}".format(
out_rect.size, test_image.size, file, out_file))
if can_remove:
os.remove(out_file)
if error_list:
error_text = "\n".join(error_list)
print(error_text)
raise AssertionError(error_text)
# Clean up the Temporary Directory
os.rmdir(out_dir)
Ana adımların açıklaması
- Dizinleri ayarla – Betik, geçici kırpılmış dosyaları depolamak için bir
outputklasörü oluşturur. - Dosya listelerini hazırla –
fileskaynak görüntü adlarını tutar,save_extsvesave_optionsise her dosyayı hedef formata ve ilgili seçenek nesnesine eşler. - Kırpma dikdörtgenini tanımla –
Rectangle(10, 15, 100, 100)çıkarılacak bölgeyi (x=10, y=15, genişlik=100, yükseklik=100) belirtir. - Kaynak görüntüyü yükle –
Image.load(file_path)kaynağı bir kez açar, I/O’yu azaltır. - Kırpma ile kaydet –
image.save(out_file, save_options[i].clone(), out_rect)kırpılmış bölgeyi uygun formata yazar.clone()çağrısı, her formatın bağımsız bir seçenek örneği almasını sağlar. - Çıktı boyutunu doğrula – Her kaydetmeden sonra betik çıktı dosyasını yeniden yükler ve
test_image.size‘ın dikdörtgen boyutuyla eşleştiğini kontrol eder, kırpmanın başarılı olduğunu garantiler. - Temizleme – Başarıyla doğrulanan dosyalar silinir ve sonunda geçici dizin kaldırılır.
Sonuç
Aspose.Imaging’s RasterImageExporter kullanarak, bir dikdörtgen bölgeyi bir kez kırpabilir ve tek bir geçişte desteklenen herhangi bir görüntü formatına dışa aktarabilirsiniz. Bu yaklaşım gereksiz yüklemeleri azaltır, kodu basitleştirir ve formatlar arasında tutarlı çıktı sağlar.
SSS
RasterImageExporter herhangi bir formatta görüntüleri kırpabilir mi? Evet, kaydetme‑seçenekleri dizisinde listelenen BMP, GIF, JPEG, PNG, TIFF, ICO, JP2, WebP, DICOM, TGA ve BigTIFF gibi tüm formatlar için kırpmayı destekler.
Kaydetme çağrısı yaparken çıktı formatını belirtmem gerekiyor mu? Format, sağladığınız dosya uzantısından çıkarılır; eşleşen save‑options nesnesi, format‑özel ayarları tanımlar.
Kaydırma dikdörtgeni kaynak görüntü boyutunu aşarsa ne olur? Bir
ArgumentOutOfRangeExceptionistisnası fırlatılır, bu yüzden kaydetmeden önce dikdörtgeniimage.sizeile doğrulayın.Kaydetme seçeneklerini klonlamak her yineleme için gerekli mi? Klonlama, her format için yeni bir seçenek örneği oluşturur ve aynı nesne yeniden kullanıldığında yan etkileri önler.
Kırpılan görüntünün beklenen boyutlara sahip olduğunu nasıl doğrulayabilirim? Kaydedilen dosyayı
Image.loadile yeniden yükleyin ve.sizeözelliğini orijinalRectangle.sizeile karşılaştırın.Clipping için ticari bir lisansa ihtiyacım var mı? Clipping, geçici bir lisansla çalışır; üretim kullanımı için tam lisansı geçici‑lisans sayfası üzerinden edinin.
Ücretsiz Lisans Alın ve Daha Fazlasını Keşfedin
Tam işlevselliği denemeye başlamak için geçici bir lisans isteyin: https://purchase.aspose.com/temporary-license/
