<?php /* 建立缩略图 */ $file = __DIR__.'/button.png'; $scale = 0.5; // 比例 $image = ImageCreateFromPNG($file); $thumbnail = ImageCreateTrueColor( ImageSX($image) * $scale, ImageSY($image) * $scale ); // 保留透明度 ImageColorTransparent($thumbnail, ImageColorAllocateAlpha($thumbnail, 0, 0, 0, 127) ); ImageAlphaBlending($thumbnail, false); ImageSaveAlpha($thumbnail, true); // 缩小 & 复制 ImageCopyResampled($thumbnail, $image, 0, 0, 0, 0, ImageSX($thumbnail), ImageSY($thumbnail), ImageSX($image), ImageSY($image) ); header('Content-type: image/png'); ImageJpeg($thumbnail); ImageDestroy($image); ImageDestroy($thumbnail);
说明:php
ImageCopyResampled() 函数用于重采样拷贝部分图像并调整大小函数
ImageColorAllocateAlpha() 函数用于为一副图像分配颜色 + Alphaspa
ImageAlphaBlending() 函数设定图像的混色模式 blog
<?php /* 建立固定大小的缩略图 */ $file = __DIR__.'/button.png'; $w = 50; $h = 20; // 图像 $original = ImageCreateFromPNG($file); $thumbnail = ImageCreateTrueColor($w, $h); // 保留透明设置 ImageColorTransparent($thumbnail, ImageColorAllocateAlpha($thumbnail, 0, 0, 0, 127) ); ImageAlphaBlending($thumbnail, false); ImageSaveAlpha($thumbnail, true); // 缩小 & 复制 $x = ImageSX($original); $y = ImageSY($original); $scale = min($x / $w, $y / $h); ImageCopyResampled($thumbnail, $original, 0, 0, ($x - ($w * $scale)) / 2, ($y - ($h * $scale)) / 2, $w, $h, $w * $scale, $h * $scale ); header('Content-type: image/png'); ImageJpeg($thumbnail); ImageDestroy($image); ImageDestroy($thumbnail);
说明:class
该方法会从图像的中心成比例地修剪出尽量大的矩形,须要计算原图和缩略图宽度和高度之比,找出其中较小的值。file
从图像中心减去矩形的通常,得出在原图中的偏移量:($x - ($w * $scale)) / 2 和 ($y - ($h * $scale)) / 2方法
参考:im
<PHP Cookbook>3'rd di