在部落格或網站中,圖片是提升視覺效果和吸引讀者的重要元素。然而,大量未壓縮的圖片會對網站的載入速度和使用者體驗造成影響。這不僅會影響讀者的瀏覽體驗,還會影響 SEO 排名。為了改善這些問題,壓縮圖片是提升網站效能的有效方法。
為什麼要壓縮圖片?#
- 提高頁面載入速度: 可以大幅度減少圖片的大小,加速頁面載入。
- 減少頻寬使用: 這對於流量有限的伺服器或使用者來說非常重要。
- 改善 SEO 排名: 如果網站載入緩慢,可能會影響 SEO 排名。透過圖片壓縮,能夠改善載入速度,間接提高網站的搜尋引擎排名。
- 提升行動裝置的體驗: 可以確保即使在行動裝置上,網頁仍能順暢地加載,提升使用者體驗。
實作圖片壓縮#
以下是使用 Python 撰寫的程式碼,用於壓縮圖片並將其轉換為容量較小的 JPG 格式。
壓縮圖片的程式碼:
from PIL import Image
import os
def compress_image(image_path, output_folder, quality=80):
"""將圖片轉換為 JPG 格式並壓縮"""
try:
# 確保圖片存在
if not os.path.isfile(image_path):
raise FileNotFoundError(f"檔案不存在: {image_path}")
# 顯示原始圖片的大小
original_size = os.path.getsize(image_path) / 1024 # KB
with Image.open(image_path) as img:
# 如果原圖片是 PNG,將其轉換為 RGB 模式,因為 JPG 不支持透明背景
if img.mode in ("RGBA", "LA", "P"):
img = img.convert("RGB")
# 生成壓縮後的圖片路徑
jpg_filename = os.path.splitext(os.path.basename(image_path))[0] + "_compressed.jpg"
output_path = os.path.join(output_folder, jpg_filename)
# 儲存圖片並進行壓縮
img.save(output_path, "JPEG", quality=quality, optimize=True)
# 顯示壓縮後圖片的大小
compressed_size = os.path.getsize(output_path) / 1024 # KB
# 計算容量減少百分比
size_reduction_percent = ((original_size - compressed_size) / original_size) * 100
print(f"✨ 圖片壓縮成功: {image_path}({original_size:.2f} KB) -> {output_path}({compressed_size:.2f} KB),減少容量: {size_reduction_percent:.2f}%")
return output_path
except Exception as e:
print(f"❌ 轉換失敗,錯誤: {e}")
return None
程式碼說明#
- 圖片格式轉換:如果圖片是 PNG 格式,將其轉換為 JPG 格式。因為 JPG 格式對於壓縮圖片效果更佳,且 JPG 不支援透明背景。
- 品質設定:使用 quality 參數來設定圖片的壓縮品質,範圍通常是 0 到 100。預設值為 80,這個值通常可以在圖片品質和文件大小之間達到良好的平衡。
- 圖片壓縮與儲存:儲存壓縮後的圖片,並利用 optimize=True 進一步最佳化圖片的儲存效果。
- 圖片大小顯示與比對:顯示原始圖片和壓縮後圖片的大小,並計算出壓縮後的容量減少百分比,讓你可以直接看到圖片壓縮效果。
結論#
壓縮圖片不僅有助於提升網站的載入速度,還能改善使用者體驗並提高 SEO 排名。透過簡單的程式碼,可以輕鬆地對圖片進行壓縮,為部落格或網站最佳化圖片,確保網站快速、流暢地呈現給每一位訪問者。
