成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 中這六個圖像文件處理技巧,Pillow 高級用法!

開發
通過本文的學習,我們將掌握Pillow庫的基本和高級用法。最后我們會動手實現一個小程序,這個小程序可以完成以下任務:調整圖片尺寸、轉換格式、添加水印,并支持批量處理。

一、圖像處理基礎:Pillow庫簡介與安裝

1. 什么是Pillow?

Pillow是一個功能強大的Python圖像處理庫,能幫我們輕松完成各種圖像操作。比如調整尺寸、添加水印、格式轉換等等!它基于PIL(Python Imaging Library),但更現代、更好用。

舉個例子,想打開一張圖片?用Pillow一句話搞定:

from PIL import Image
img = Image.open("example.jpg")  # 打開圖像文件

是不是超簡單?

2. 如何安裝Pillow?

安裝Pillow也很容易,只需運行以下命令:

pip install pillow

如果遇到問題,可以試試升級pip后再安裝:

pip install --upgrade pip
pip install pillow

裝好后,你就可以開始玩轉圖像啦!

二、打開與保存圖像:基本文件操作技巧

1. 使用 Pillow 打開圖像文件

在 Python 中,Pillow 是處理圖像的利器。想打開一張圖片?只需幾行代碼就能搞定!比如下面這個例子:

from PIL import Image

# 打開圖像文件
img = Image.open("example.jpg")
img.show()  # 顯示圖像

Image.open() 方法會加載指定路徑的圖像文件,并返回一個圖像對象。

2. 保存圖像到新文件

處理完圖像后,我們通常需要將其保存為新文件。Pillow 讓保存圖像變得非常簡單!來看一個保存為 PNG 格式的例子:

# 將圖像保存為新的格式
img.save("new_image.png")

通過 save() 方法,你可以輕松指定保存路徑和文件格式(如 PNG、JPEG 等)。是不是很方便?

無論是打開還是保存圖像,Pillow 都提供了簡潔而強大的接口,讓你快速上手圖像處理!

三、調整圖像尺寸:縮放與裁剪高級用法

1. 縮放圖像的高級技巧

在調整圖像大小時,Pillow 提供了靈活的 resize 方法。我們可以使用不同的插值算法來優化圖片質量!比如,Image.LANCZOS 是高質量縮放的最佳選擇。來看個例子:

from PIL import Image

# 打開圖片
img = Image.open("example.jpg")
# 使用 LANCZOS 算法縮放至 300x300
resized_img = img.resize((300, 300), Image.LANCZOS)
resized_img.save("resized_example.jpg")

這段代碼將圖片縮放到 300x300 像素,同時保持高質量。

2. 高級裁剪技巧

裁剪圖像可以突出重點區域!通過指定坐標范圍,你可以精確控制裁剪區域。試試這個例子:

# 裁剪圖像 (左, 上, 右, 下)
cropped_img = img.crop((50, 50, 300, 300))
cropped_img.save("cropped_example.jpg")

這里我們從原圖中裁剪出一個 250x250 的區域,位置從 (50, 50) 開始。是不是超簡單?

四、圖像格式轉換:支持現代圖像格式(如WebP)

1. 將圖片轉換為現代WebP格式

WebP是一種高效的現代圖像格式,可以顯著減小文件大小而不損失質量。使用Pillow庫,我們可以輕松將其他格式的圖片轉換為WebP格式。看下面的例子:

from PIL import Image

# 打開一張圖片
img = Image.open("example.jpg")
# 轉換為WebP格式并保存
img.save("example.webp", "WEBP")

這段代碼中,我們先用Image.open()打開一張JPG圖片,再通過save()方法將其保存為WebP格式。是不是很簡單?這種方法特別適合需要優化網站加載速度的場景!

五、添加水印:透明度與位置的精準控制

1. 使用Pillow調整水印透明度

在圖像上添加水印時,透明度的控制非常重要。通過調整水印圖層的Alpha通道,可以讓水印更自然地融入背景圖像。來看一個簡單的例子:

from PIL import Image

# 打開水印圖片并轉換為RGBA模式
watermark = Image.open("watermark.png").convert("RGBA")

# 獲取水印像素數據
data = watermark.getdata()

# 創建新的透明度數據
new_data = []
for item in data:
    # 調整透明度(原透明度 * 0.5)
    new_data.append((item[0], item[1], item[2], int(item[3] * 0.5)))

# 應用新的透明度數據
watermark.putdata(new_data)
watermark.save("transparent_watermark.png")

以上代碼將水印的透明度降低到一半,效果更加柔和。

2. 精準控制水印位置

除了透明度,水印的位置也很關鍵。我們可以根據主圖像的尺寸動態計算水印的最佳放置點。例如,將水印放在右下角:

from PIL import Image

# 打開主圖像和水印圖像
base_image = Image.open("image.jpg")
watermark = Image.open("transparent_watermark.png")

# 計算水印位置(右下角)
position = (base_image.width - watermark.width, base_image.height - watermark.height)

# 將水印粘貼到主圖像
base_image.paste(watermark, position, watermark)
base_image.save("watermarked_image.jpg")

通過這種方式,你可以輕松實現水印透明度與位置的精準控制!

六、圖像批量處理:自動化腳本設計

1. 批量調整圖像尺寸

在實際工作中,我們常常需要對一批圖片進行統一的尺寸調整。用 Pillow 的 Image.resize() 方法可以輕松搞定!比如,將所有圖片統一縮放到 800x600:

from PIL import Image
import os

# 定義目標尺寸
target_size = (800, 600)

# 遍歷文件夾中的圖片
for filename in os.listdir("images"):
    if filename.endswith(('.png', '.jpg', '.jpeg')):  # 篩選圖片格式
        img_path = os.path.join("images", filename)
        with Image.open(img_path) as img:
            resized_img = img.resize(target_size)  # 調整尺寸
            resized_img.save(f"resized_{filename}")  # 保存新文件

這段代碼會遍歷 "images" 文件夾中的所有圖片,并將它們調整為指定尺寸。

2. 自動轉換圖像格式

如果需要將一堆圖片從一種格式轉換成另一種格式(比如從 JPG 轉 PNG),Pillow 也能幫上忙!下面是一個簡單的例子:

from PIL import Image
import os

# 遍歷文件夾中的圖片
for filename in os.listdir("images"):
    if filename.endswith(('.jpg', '.jpeg')):  # 只處理 JPG 格式
        img_path = os.path.join("images", filename)
        with Image.open(img_path) as img:
            new_filename = os.path.splitext(filename)[0] + ".png"  # 修改擴展名
            img.save(os.path.join("converted", new_filename))  # 保存為 PNG

運行后,所有 JPG 圖片都會被轉換為 PNG 格式并保存到 "converted" 文件夾中。

3. 批量添加水印

給多張圖片添加水印也是常見的需求。我們可以結合 Pillow 的 Image.paste() 方法來實現透明水印的疊加:

from PIL import Image, ImageDraw
import os

watermark_text = "Your Watermark"
watermark_color = (255, 255, 255, 128)  # 半透明白色

for filename in os.listdir("images"):
    if filename.endswith(('.png', '.jpg', '.jpeg')):
        img_path = os.path.join("images", filename)
        with Image.open(img_path).convert("RGBA") as img:
            draw = ImageDraw.Draw(img)
            width, height = img.size
            text_width, text_height = draw.textsize(watermark_text)
            position = (width - text_width - 10, height - text_height - 10)  # 放置右下角
            draw.text(position, watermark_text, fill=watermark_color)  # 添加水印
            img.save(f"watermarked_{filename}")

這段代碼會在每張圖片的右下角添加半透明的水印文字。

通過這些技巧,你可以輕松設計出高效的圖像批量處理腳本!無論是調整尺寸、轉換格式還是添加水印,Pillow 都能幫你快速完成任務。

七、實戰案例:創建一個圖片處理小程序

1. 小程序功能概述

通過前面章節的學習,我們已經掌握了Pillow庫的基本和高級用法。現在,讓我們動手實現一個小程序!這個小程序可以完成以下任務:調整圖片尺寸、轉換格式、添加水印,并支持批量處理。

示例代碼:

from PIL import Image, ImageDraw, ImageFont

# 功能1:調整圖片尺寸
def resize_image(input_path, output_path, size):
    """調整圖片尺寸"""
    with Image.open(input_path) as img:
        resized_img = img.resize(size)
        resized_img.save(output_path)

# 功能2:添加水印
def add_watermark(input_path, output_path, text):
    """為圖片添加文字水印"""
    with Image.open(input_path).convert("RGBA") as img:
        txt_layer = Image.new("RGBA", img.size, (255, 255, 255, 0))
        draw = ImageDraw.Draw(txt_layer)
        font = ImageFont.truetype("arial.ttf", 36)  # 字體文件路徑
        draw.text((10, 10), text, font=font, fill=(255, 255, 255, 128))
        combined = Image.alpha_composite(img, txt_layer)
        combined.save(output_path)

# 測試代碼
resize_image("input.jpg", "output_resized.jpg", (300, 300))  # 調整尺寸
add_watermark("input.jpg", "output_watermarked.jpg", "Sample Watermark")  # 添加水印

輸出結果:運行后,output_resized.jpg 是調整尺寸后的圖片,而 output_watermarked.jpg 是帶有水印的圖片。

解釋:

  • resize_image() 函數使用了 img.resize() 方法來調整圖片尺寸。
  • add_watermark() 函數通過創建透明圖層并繪制文字,實現了水印功能。

這個小程序簡單實用,適合初學者練習!

責任編輯:趙寧寧 來源: 手把手PythonAI編程
相關推薦

2024-12-04 09:27:56

2025-05-06 09:10:00

Python路徑處理os.path

2025-05-09 08:55:00

Pythonpip包管理

2024-03-12 12:27:00

Vue 3前端開發

2023-09-24 13:55:42

Spring應用程序

2021-08-23 11:35:00

工具yyds開源

2025-02-28 13:00:00

JavaScrip開發語言

2024-08-19 09:22:48

2021-09-03 09:57:13

開源技術 項目

2024-03-06 10:50:30

云計算云實例云提供商

2016-12-15 09:53:07

自學編程技巧

2022-04-29 17:03:37

WordPress開發者網站安全

2022-04-04 21:33:48

進度條Python

2024-01-30 08:43:26

IF 語句JavaScripJS

2016-01-04 15:20:46

2016趨勢互聯網

2021-11-16 11:30:10

Linux命令運維

2024-01-16 15:19:29

Python內存

2024-07-15 08:10:57

2023-02-08 17:00:07

IF 語句技巧代碼

2023-10-10 18:24:46

PostgreSQL性能RDBMS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.夜夜骑.com| 欧美一二三区 | 国产成人自拍一区 | 国产精品一区二区三级 | 精品国产欧美一区二区 | 99久久日韩精品免费热麻豆美女 | 91亚洲国产成人久久精品网站 | 性国产xxxx乳高跟 | 丁香久久 | 在线观看中文字幕一区二区 | 天天爽天天操 | 国产精品免费看 | 精品亚洲一区二区三区 | 91欧美| 久久精品国产亚洲 | 国产精品av久久久久久久久久 | 99tv| 一区二区三区高清 | 久久久999精品 | 成人天堂| 99精品网站 | 亚洲精品一区在线观看 | 亚洲精品国产成人 | av天天看| 日韩一级电影免费观看 | 99国产精品99久久久久久 | 午夜免费精品视频 | 天天色图 | 日韩免费在线 | xx性欧美肥妇精品久久久久久 | аⅴ资源新版在线天堂 | 国产精品91视频 | 伊人亚洲 | 国产精品亚洲一区二区三区在线 | 国产精品久久国产精品99 | 日韩欧美视频免费在线观看 | 亚洲视频免费在线 | 精品国产免费一区二区三区演员表 | 精品久久香蕉国产线看观看亚洲 | 亚洲综合一区二区三区 | 国内精品成人 |