首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP Imagick 圖片處理完整指南:縮放、裁剪、GIF 支援、壓縮與水印

     編輯:PHP 綜合知識

ImagickService 類別架構

封裝常用圖片操作:縮放、裁剪、GIF 幀處理、品質壓縮、浮水印、文字繪製、邊框、濾鏡效果。

核心方法

  • open($path):載入圖片,自動偵測格式
  • resize($width, $height):智慧縮放裁剪,支援三種模式
    • 僅寬度 → 高度自適應
    • 僅高度 → 寬度自適應
    • 寬高皆指定 → 等比縮放後居中裁剪
  • _resizeGif():逐幀處理 GIF 動畫,保留延遲與處置設定
  • save_to($path):JPEG 壓縮品質 60%、移除 EXIF、GIF 多幀輸出
  • resize_to():進階縮放模式(force/scale/scale_fill/九宮格定位)
  • add_watermark() / add_text():圖片/文字浮水印,GIF 逐幀繪製
  • 濾鏡方法:blur()、gaussian_blur()、motion_blur()、radial_blur()、add_noise()、level()、modulate()、charcoal()、oil_paint()
  • 幾何變換:flop() 水平翻轉、flip() 垂直翻轉、border() 邊框

關鍵程式碼片段

// 縮放裁剪邏輯核心
if (($src_width/$src_height) < ($width/$height)) {
    // 來源較瘦 → 按寬度放大,從頂部裁剪
    $crop_h = intval($src_height * $width / $src_width);
    $crop_y = 0;
} else {
    // 來源較寬 → 按高度放大,居中裁剪
    $crop_w = intval($src_width * $height / $src_height);
    $crop_x = intval(($crop_w - $width) / 2);
}

GIF 處理要點

逐幀建立透明畫布、合成原幀、縮放/裁剪、保留 setImageDelay()、setImageDispose(),最後重組動畫。

使用範例

$img = new ImagickService();
$img->open('photo.jpg');
$img->resize(800, 600);
$img->add_text('Copyright', 10, 10, 0, ['font_size' => 24, 'fill_color' => 'white']);
$img->save_to('output.jpg');
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved