使用 Python 進行 JPEG2000 到 JPG 影像轉換
建立 Python 應用程式以透過伺服器 API 將 JPEG2000 轉換為 JPG 圖像和照片
如何使用 Python 將 JPEG2000 轉換為 JPG 影像和照片
圖像檔案從一種格式轉換為另一種格式是每個圖形設計師遇到的常見任務。文件轉換的效率和卓越性不僅影響完成速度,而且對評估整體工作品質也起著至關重要的作用。關於影像來源,它們經常需要轉換為更適合列印或線上分發的替代格式。在圖形編輯器中製作的圖像可能是向量格式。在這種情況下,為了網站發布,必須對其進行光柵化並以光柵格式保存。您可以選擇將影像轉換為未壓縮格式以獲得卓越的質量,或將其儲存為無損壓縮格式以最小化檔案大小。對於必須減小檔案大小的情況(例如在網站應用程式中),可以轉換為有損壓縮格式。專門的影像資料壓縮演算法可以顯著減小檔案大小,同時保持可接受的影像質量,確保快速影像載入。要將圖像和照片從 JPEG2000 轉換為 JPG,我們將使用 Aspose.Imaging for Python via .NET API 是一個功能豐富、功能強大且易於使用的圖像處理和轉換 API,適用於 Python 平台。您可以使用系統命令中的以下命令安裝它。
系統命令行
>> pip install aspose-imaging-python-net
通過 Python 將 JPEG2000 轉換為 JPG 的步驟
開發人員只需幾行代碼即可輕鬆加載 JPEG2000 文件並將其轉換為 JPG。
- 使用 Image.Load 方法加載 JPEG2000 文件
- 創建和設置 ImageOptionsBase 所需子類的實例(例如 BmpOptions、PngOptions 等)
- 調用 Image.Save 方法
- 傳遞帶有 JPG 擴展名的文件路徑和 ImageOptionsBase 類的對象
系統要求
在運行轉換示例代碼之前,請確保您具有以下先決條件。
- 作業系統:Windows 或Linux。
- 開發環境:支援.NET Core 7及更高版本,例如Microsoft Visual Studio。
將 JPEG2000 轉換為 JPG - Python
from aspose.imaging import * | |
from aspose.imaging.fileformats.tiff.enums import * | |
from aspose.imaging.fileformats.jpeg2000 import * | |
from aspose.imaging.fileformats.png import * | |
from aspose.imaging.imageoptions import * | |
from aspose.pycore import is_assignable | |
import os | |
if 'TEMPLATE_DIR' in os.environ: | |
templates_folder = os.environ['TEMPLATE_DIR'] | |
else: | |
templates_folder = r"C:\Users\USER\Downloads\templates" | |
delete_output = 'SAVE_OUTPUT' not in os.environ | |
data_dir = templates_folder | |
def process_convertion(): | |
import_formats, export_formats = get_available_image_formats() | |
for import_key, import_value in import_formats.items(): | |
format_ext = import_key | |
input_file = os.path.join(templates_folder, f"template.{format_ext}") | |
if not os.path.exists(input_file): | |
continue | |
for export_key, export_value in export_formats.items(): | |
output_file = os.path.join(templates_folder, f"convert-{format_ext}-to-{export_key}.{export_key}") | |
print("Processing conversion:" + output_file) | |
with Image.load(input_file) as image: | |
export_options = export_value.clone() | |
if is_assignable(image, VectorImage): | |
rasterization_options = import_value | |
rasterization_options.page_width = float(image.width) | |
rasterization_options.page_height = float(image.height) | |
export_options.vector_rasterization_options = rasterization_options | |
image.save(output_file, export_options) | |
if delete_output: | |
os.remove(output_file) | |
def get_available_image_formats(): | |
obj_init = Jpeg2000Options() | |
obj_init.codec = Jpeg2000Codec.J2K | |
obj_init2 = Jpeg2000Options() | |
obj_init2.codec = Jpeg2000Codec.JP2 | |
obj_init3 = PngOptions() | |
obj_init3.color_type = PngColorType.TRUECOLOR_WITH_ALPHA | |
obj_init4 = {} | |
obj_init4["bmp"] = BmpOptions() | |
obj_init4["gif"] = GifOptions() | |
obj_init4["dicom"] = DicomOptions() | |
obj_init4["jpg"] = JpegOptions() | |
obj_init4["jpeg"] = JpegOptions() | |
obj_init4["jpeg2000"] = Jpeg2000Options() | |
obj_init4["j2k"] = obj_init | |
obj_init4["jp2"] = obj_init2 | |
obj_init4["png"] = obj_init3 | |
obj_init4["apng"] = ApngOptions() | |
obj_init4["tiff"] = TiffOptions(TiffExpectedFormat.DEFAULT) | |
obj_init4["tif"] = TiffOptions(TiffExpectedFormat.DEFAULT) | |
obj_init4["tga"] = TgaOptions() | |
obj_init4["webp"] = WebPOptions() | |
obj_init4["ico"] = IcoOptions(FileFormat.PNG, 24) | |
raster_formats_that_support_export_and_import = obj_init4 | |
obj_init5 = EmfOptions() | |
obj_init5.compress = True | |
obj_init6 = WmfOptions() | |
obj_init6.compress = True | |
obj_init7 = SvgOptions() | |
obj_init7.compress = True | |
obj_init8 = {} | |
obj_init8["emf"] = (EmfOptions(), EmfRasterizationOptions()) | |
obj_init8["svg"] = (SvgOptions(), SvgRasterizationOptions()) | |
obj_init8["wmf"] = (WmfOptions(), WmfRasterizationOptions()) | |
obj_init8["emz"] = (obj_init5, EmfRasterizationOptions()) | |
obj_init8["wmz"] = (obj_init6, WmfRasterizationOptions()) | |
obj_init8["svgz"] = (obj_init7, SvgRasterizationOptions()) | |
vector_formats_that_support_export_and_import = obj_init8 | |
obj_init9 = DxfOptions() | |
obj_init9.text_as_lines = True | |
obj_init9.convert_text_beziers = True | |
obj_init10 = {} | |
obj_init10["psd"] = PsdOptions() | |
obj_init10["dxf"] = obj_init9 | |
obj_init10["pdf"] = PdfOptions() | |
obj_init10["html"] = Html5CanvasOptions() | |
formats_only_for_export = obj_init10 | |
obj_init11 = {} | |
obj_init11["djvu"] = None | |
obj_init11["dng"] = None | |
obj_init11["dib"] = None | |
formats_only_for_import = obj_init11 | |
obj_init12 = {} | |
obj_init12["eps"] = EpsRasterizationOptions() | |
obj_init12["cdr"] = CdrRasterizationOptions() | |
obj_init12["cmx"] = CmxRasterizationOptions() | |
obj_init12["otg"] = OtgRasterizationOptions() | |
obj_init12["odg"] = OdgRasterizationOptions() | |
vector_formats_only_for_import = obj_init12 | |
# Get total set of formats to what we can export images | |
export_formats = {k: v[0] for k, v in vector_formats_that_support_export_and_import.items()} | |
export_formats.update(formats_only_for_export) | |
export_formats.update(raster_formats_that_support_export_and_import) | |
# Get total set of formats that can be loaded | |
import_formats = {k : VectorRasterizationOptions() for k in formats_only_for_import} | |
import_formats.update(vector_formats_only_for_import) | |
import_formats.update({k : v[1] for k, v in vector_formats_that_support_export_and_import.items()}) | |
return import_formats, export_formats | |
# run | |
process_convertion() |
JPEG2000 什麼是 JPEG2000 文件格式
JPEG 2000 (JP2) 是一種圖像編碼系統和最先進的圖像壓縮標準。設計,使用小波技術 JPEG 2000 可以一次編碼任何質量的無損內容。此外,在編碼效率沒有任何實質性損失的情況下,JPEG 2000 能夠有效地訪問相同的內容並將其解碼為各種其他分辨率和質量。 JPEG 2000 中的碼流具有顯著的可擴展性,具有為空間隨機訪問提供便利的感興趣區域。擁有多達 16384 個不同的組件,尺寸以萬億像素為單位,精度可高達 38 位/樣本。
閱讀更多 | JPEG2000JPG 什麼是 JPG 文件格式
JPEG 是一種使用有損壓縮方法保存的圖像格式。作為壓縮的結果,輸出圖像是存儲大小和圖像質量之間的權衡。用戶可以調整壓縮級別以達到所需的質量級別,同時減小存儲大小。如果對圖像應用 10:1 壓縮,則對圖像質量的影響可以忽略不計。壓縮值越高,圖像質量的劣化程度越高。
閱讀更多 | JPG其他支持的轉換
使用 Python,可以輕鬆轉換不同的格式,包括。