欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)AVIF圖片與其他圖片格式間的批量轉(zhuǎn)換

 更新時間:2025年04月09日 09:55:29   作者:頗有幾分姿色  
這篇文章主要為大家詳細(xì)介紹了如何使用 Pillow 庫實(shí)現(xiàn)AVIF與其他格式的相互轉(zhuǎn)換,即將AVIF轉(zhuǎn)換為常見的格式,比如 JPG 或 PNG,需要的小伙伴可以參考下

圖片格式 AVIF轉(zhuǎn)換為常見的格式,比如 JPG 或 PNG。本文介紹如何使用 Pillow 庫實(shí)現(xiàn)AVIF與其他格式的相互轉(zhuǎn)換。

環(huán)境配置

使用 Python 環(huán)境管理工具 `conda` 和常用庫 `Pillow` 來處理圖片格式轉(zhuǎn)換。環(huán)境的詳細(xì)信息:

  • Conda: 24.7.1
  • Python: 3.8.19
  • Pillow: 10.4.0
  • pillow-avif-plugin: 1.4.6

安裝步驟:

conda create -n yourenv python=3.8.19
conda activate yourenv

pip install pillow pillow-avif-plugin

Pillow 支持的常見圖片格式:

  • JPEG (jpg, jpeg)
  • PNG
  • GIF
  • BMP
  • TIFF
  • WEBP
  • 其他格式(部分格式需要插件支持,如 AVIF)

可以在 Pillow 的官方文檔中查看支持的文件格式

也可以通過代碼查看:

from PIL import Image

# 打印 Pillow 支持的文件格式
print(Image.registered_extensions())

1.將單個 AVIF 圖片轉(zhuǎn)換為 JPG 和 PNG

單張圖片轉(zhuǎn)換

將 `.avif` 圖片轉(zhuǎn)換為 `.jpg` 和 `.png` 格式。

import pillow_avif
from PIL import Image

# 將 AVIF 轉(zhuǎn)換為 JPG
def convert_avif_to_jpg(input_path, output_path):
    with Image.open(input_path) as img:
        # 將圖像轉(zhuǎn)換為 RGB 模式確保兼容性
        img = img.convert('RGB')
        img.save(output_path, 'JPEG')

# 將 AVIF 轉(zhuǎn)換為 PNG
def convert_avif_to_png(input_path, output_path):
    with Image.open(input_path) as img:
        img.save(output_path, 'PNG')

# 使用示例
convert_avif_to_jpg('demo.avif', 'output.jpg')
convert_avif_to_png('demo.avif', 'output.png')

運(yùn)行效果:

2.批量轉(zhuǎn)換目錄下所有 AVIF 圖片為其他格式

遍歷一個目錄下的所有 `.avif` 圖片,批量轉(zhuǎn)換為常見格式如 `JPG` 或 `PNG`。

import os
from PIL import Image
import pillow_avif


def convert_avif(input_path, output_path, output_format='jpg'):
    # 打開AVIF圖像
    with Image.open(input_path) as img:
        # 如果輸出格式是JPG,需要先轉(zhuǎn)換為RGB模式
        if output_format.lower() in ['jpg', 'jpeg']:
            img = img.convert('RGB')
        # 處理其他格式直接保存
        img.save(output_path, output_format.upper())


def batch_convert_avif(input_directory, output_directory, output_format='jpg'):
    # 確保輸出目錄存在
    if not os.path.exists(output_directory):
        os.makedirs(output_directory)

    # 遍歷輸入目錄中的所有文件
    for filename in os.listdir(input_directory):
        if filename.lower().endswith('.avif'):
            input_path = os.path.join(input_directory, filename)
            output_filename = os.path.splitext(filename)[0] + f'.{output_format}'
            output_path = os.path.join(output_directory, output_filename)

            try:
                # 調(diào)用通用轉(zhuǎn)換函數(shù),指定輸出格式
                convert_avif(input_path, output_path, output_format)
                print(f'已成功轉(zhuǎn)換: {filename} -> {output_format.upper()}')
            except Exception as e:
                print(f'轉(zhuǎn)換失敗: {filename} 錯誤: {str(e)}')


# 使用示例:轉(zhuǎn)換為PNG格式
batch_convert_avif('E:/software/test', 'E:/software/test', output_format='png')

運(yùn)行效果:

3.將其他格式圖片批量轉(zhuǎn)換為 AVIF

將 `JPG` 或 `PNG` 等圖片格式批量轉(zhuǎn)換為 `AVIF`。

import os
from PIL import Image
import pillow_avif


def convert_to_avif(input_path, output_path):
    # 打開圖片(支持JPG、PNG等格式)
    with Image.open(input_path) as img:
        # 如果不是RGBA或RGB模式,需要轉(zhuǎn)換
        if img.mode not in ("RGBA", "RGB"):
            img = img.convert("RGBA")
        # 保存為AVIF格式
        img.save(output_path, "AVIF")


def batch_convert_to_avif(input_directory, output_directory, supported_formats=('jpg', 'jpeg', 'png')):
    # 確保輸出目錄存在
    if not os.path.exists(output_directory):
        os.makedirs(output_directory)

    # 遍歷輸入目錄中的所有文件
    for filename in os.listdir(input_directory):
        # 檢查文件是否為支持的格式
        if filename.lower().endswith(supported_formats):
            input_path = os.path.join(input_directory, filename)
            # 修改輸出文件擴(kuò)展名為 .avif
            output_filename = os.path.splitext(filename)[0] + '.avif'
            output_path = os.path.join(output_directory, output_filename)

            try:
                # 將圖片轉(zhuǎn)換為AVIF
                convert_to_avif(input_path, output_path)
                print(f'已成功轉(zhuǎn)換: {filename} -> {output_filename}')
            except Exception as e:
                # 捕獲并處理異常
                print(f'轉(zhuǎn)換失敗: {filename} 錯誤: {str(e)}')


# 使用示例:將JPG、PNG批量轉(zhuǎn)換為AVIF
batch_convert_to_avif('E:/software/test/avif', 'E:/software/test/avif')

運(yùn)行效果:

到此這篇關(guān)于Python實(shí)現(xiàn)AVIF圖片與其他圖片格式間的批量轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Python AVIF圖片格式轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)生成帶logo背景圖的二維碼

    Python實(shí)現(xiàn)生成帶logo背景圖的二維碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)生成帶logo背景圖的二維碼(靜態(tài)和動態(tài)圖),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-05-05
  • Python檢驗(yàn)用戶輸入密碼的復(fù)雜度

    Python檢驗(yàn)用戶輸入密碼的復(fù)雜度

    這篇文章主要介紹了Python檢驗(yàn)用戶輸入密碼的復(fù)雜度,在用戶設(shè)置密碼的時候檢測輸入的密碼大小寫數(shù)字等,需要的朋友可以參考下
    2023-04-04
  • 淺談Python中的閉包

    淺談Python中的閉包

    簡單說,閉包就是根據(jù)不同的配置信息得到不同的結(jié)果。再來看看專業(yè)的解釋:閉包(Closure)是詞法閉包(Lexical Closure)的簡稱,是引用了自由變量的函數(shù)。這個被引用的自由變量將和這個函數(shù)一同存在,即使已經(jīng)離開了創(chuàng)造它的環(huán)境也不例外。
    2015-07-07
  • python內(nèi)置函數(shù)breakpoint()與bytearray()示例詳解

    python內(nèi)置函數(shù)breakpoint()與bytearray()示例詳解

    本文給大家分享的是python內(nèi)置函數(shù)breakpoint()與bytearray()的相關(guān)資料,并給大家附上了詳細(xì)代碼,有需要的小伙伴可以參考下
    2017-04-04
  • Python?mistune庫靈活的Markdown解析器使用實(shí)例探索

    Python?mistune庫靈活的Markdown解析器使用實(shí)例探索

    本文將深入介紹Python?Mistune,包括其基本概念、安裝方法、示例代碼以及一些高級用法,以幫助大家充分利用這一工具來處理Markdown文本
    2024-01-01
  • Python中的getter和setter的方法使用詳解

    Python中的getter和setter的方法使用詳解

    基本上,在面向?qū)ο缶幊陶Z言中,使用setter和getter方法的主要目的是為了確保數(shù)據(jù)的封裝,這篇文章主要介紹了Python的getter和setter的方法使用詳解,需要的朋友可以參考下
    2022-12-12
  • Python繪制土地利用和土地覆蓋類型圖示例詳解

    Python繪制土地利用和土地覆蓋類型圖示例詳解

    本文介紹了如何使用Python繪制土地利用和土地覆蓋類型圖,并提供了詳細(xì)的代碼示例,通過安裝所需的庫,準(zhǔn)備地理數(shù)據(jù),使用geopandas和matplotlib等庫,可以繪制出土地利用和覆蓋類型圖,感興趣的朋友一起看看吧
    2025-01-01
  • 基于Python實(shí)現(xiàn)繪制簡單動圖的示例詳解

    基于Python實(shí)現(xiàn)繪制簡單動圖的示例詳解

    動畫是一種高效的可視化工具,能夠提升用戶的吸引力和視覺體驗(yàn),有助于以富有意義的方式呈現(xiàn)數(shù)據(jù)可視化,本文的主要介紹在Python中兩種簡單制作動圖的方法,需要的可以了解下
    2023-10-10
  • python3解析庫pyquery的深入講解

    python3解析庫pyquery的深入講解

    做過前端開發(fā)的同志都應(yīng)該知道或了解過jquery,jQuery 是一個用來處理DOM的JavaScript庫。pyquery說白了就是jquery的Python版本。下面這篇文章主要給大家介紹了關(guān)于python3解析庫pyquery的相關(guān)資料,需要的朋友可以參考下
    2018-06-06
  • Pandas中的loc與iloc區(qū)別與用法小結(jié)

    Pandas中的loc與iloc區(qū)別與用法小結(jié)

    loc函數(shù):通過行索引 “Index” 中的具體值來取行數(shù)據(jù)(如取"Index"為"A"的行)而iloc函數(shù):通過行號來取行數(shù)據(jù)(如取第二行的數(shù)據(jù)),這篇文章介紹Pandas中的loc與iloc區(qū)別與用法,感興趣的朋友一起看看吧
    2024-01-01

最新評論