封裝常用圖片操作:縮放、裁剪、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);
}
逐幀建立透明畫布、合成原幀、縮放/裁剪、保留 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');