Ořezávání obrázku a jeho export do více formátů je běžnou požadavkem při vytváření miniatur, náhledů nebo vlastních aktiv. Tento průvodce ukazuje, jak provést tuto operaci pomocí Aspose.Imaging for Python a třídy RasterImageExporter, zaměřený na klíčové slovo clip and export images in Python.
Klíčové poznatky
- RasterImageExporter může oříznout obdélník a výsledek zapsat do libovolného podporovaného formátu obrázku.
- Stejný ořezávací obdélník lze znovu použít napříč desítkami formátů, aniž byste znovu načítali zdrojový obrázek.
- Ověření velikosti uloženého obrázku zajišťuje, že operace oříznutí byla úspěšná.
- Klonování objektů save‑options zabraňuje vedlejším efektům mezi formáty.
- Dočasná licence umožňuje plnou funkčnost během hodnocení API.
Proč ořezávat a exportovat obrázky
Vývojáři často potřebují jediný oříznutý region z obrázku, ale musí tento region dodat v několika formátech souborů pro různé platformy. Před touto možností byste museli načíst, oříznout a uložit obrázek samostatně pro každý formát, což zvyšovalo zátěž I/O a CPU. RasterImageExporter zjednodušuje pracovní postup tím, že na všechny výstupní formáty aplikuje stejný ořezový obdélník v jedné smyčce, čímž šetří čas a snižuje složitost kódu.
Začínáme s Aspose.Imaging pro Python
Nejprve nainstalujte balíček Aspose.Imaging pomocí pip:
pip install aspose-imaging-python-net
Pro podrobnou dokumentaci navštivte stránku produktu. Knihovna funguje v jakémkoli prostředí Python, které podporuje integraci .NET prostřednictvím Python.NET.
Jak oříznout a exportovat obrázky v několika formátech
Níže je kompletní, samostatný příklad, který načte sadu testovacích obrázků, definuje ořezávací obdélník a uloží oříznutou oblast do jedenácti různých formátů.
Následující příklad ukazuje, jak oříznout obdélník a exportovat výsledek do více formátů pomocí Pythonu.
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)
Vysvětlení klíčových kroků
- Nastavení adresářů – Skript vytvoří složku
output, kam uloží dočasné oříznuté soubory. - Připravit seznamy souborů –
filesobsahuje názvy zdrojových obrázků, zatímcosave_extsasave_optionsmapují každý soubor na cílový formát a odpovídající objekt možností. - Definovat ořezávací obdélník –
Rectangle(10, 15, 100, 100)určuje oblast k extrakci (x=10, y=15, šířka=100, výška=100). - Načíst zdrojový obrázek –
Image.load(file_path)otevře zdroj jednou, čímž snižuje I/O. - Uložit s ořezem –
image.save(out_file, save_options[i].clone(), out_rect)zapíše oříznutou oblast do příslušného formátu. Voláníclone()zajišťuje, že každý formát získá nezávislou instanci možností. - Ověřit velikost výstupu – Po každém uložení skript znovu načte výstupní soubor a zkontroluje, že
test_image.sizeodpovídá velikosti obdélníku, čímž garantuje úspěšný ořez. - Úklid – Úspěšně ověřené soubory jsou odstraněny a nakonec je smazán dočasný adresář.
Závěr
Pomocí Aspose.Imaging’s RasterImageExporter můžete oříznout obdélníkovou oblast jednou a exportovat ji do libovolného z podporovaných formátů obrázků v jediném průchodu. Tento přístup snižuje nadbytečné načítání, zjednodušuje kód a zajišťuje konzistentní výstup napříč formáty.
Často kladené otázky
Může RasterImageExporter ořezávat obrázky libovolného formátu? Ano, podporuje ořezávání pro všechny formáty uvedené v poli save‑options, jako jsou BMP, GIF, JPEG, PNG, TIFF, ICO, JP2, WebP, DICOM, TGA a BigTIFF.
Musím při volání metody save specifikovat výstupní formát? Formát je odvozen z přípony souboru, kterou zadáte; odpovídající objekt save‑options definuje všechna nastavení specifická pro formát.
Co se stane, pokud ořezávací obdélník přesáhne velikost zdrojového obrázku? Je vyvolána výjimka
ArgumentOutOfRangeException, takže před uložením ověřte obdélník vůčiimage.size.Je nutné klonovat možnosti uložení pro každou iteraci? Klonování vytvoří čerstvou instanci možností pro každý formát, čímž se zabrání vedlejším efektům při opětovném použití stejného objektu.
Jak mohu ověřit, že oříznutý obrázek má očekávané rozměry?
Znovu načtěte uložený soubor pomocíImage.loada porovnejte jeho vlastnost.sizes původníRectangle.size.Potřebuji komerční licenci pro ořezávání? Ořezávání funguje s dočasnou licencí; pro produkční použití získáte plnou licenci prostřednictvím stránky dočasné licence.
Získejte bezplatnou licenci a objevte více
Začněte experimentovat s plnou funkčností tím, že požádáte o dočasnou licenci: https://purchase.aspose.com/temporary-license/
- Aspose.Imaging for Python Documentation
- API Reference pro Python
- Bezplatné online nástroje pro zpracování obrazu
