教你用PHP写生成缩略图代码
程序员文章站
2022-05-17 11:52:39
...
源文件,目标文件,目标宽,目标高,是否允许剪裁。 如果目标写入null直接二进制输出。不生成文件。 无 function img2thumb($src_img, $dst_img, $width = 64, $height = 64, $nocut = 0) {/*if(!is_file($src_img)) return false;*/if(!($width*$height)) re
源文件,目标文件,目标宽,目标高,是否允许剪裁。
如果目标写入 null 直接二进制输出。不生成文件。
function img2thumb($src_img, $dst_img, $width = 64, $height = 64, $nocut = 0) { /* if(!is_file($src_img)) return false; */ if(!($width*$height)) return false; $ext = strtolower(substr(strrchr($src_img, '.'),1)); if(!$ext) return false; $otfunc = 'image' . ($ext == 'jpg' ? 'jpeg' : $ext); if(!function_exists($otfunc)) return false; $srcinfo = getimagesize($src_img); if(!$srcinfo) return false; $src_w = $srcinfo[0]; $src_h = $srcinfo[1]; $type = strtolower(substr(image_type_to_extension($srcinfo[2]), 1)); $openfunc = 'imagecreatefrom' . ($type == 'jpg' ? 'jpeg' : $type); if(!function_exists($openfunc)) return false; $createfunc = 'imagecreate'; $buildfunc = 'imagecopyresized'; $x=$y=0; $src_t = $src_w / $src_h; if($src_t > $width / $height) { $dst_w = $width; $dst_h = $width / $src_t; $nocut && $y = ($height - $dst_h)/2; } else { $dst_w = $src_t * $height; $dst_h = $height; $nocut && $x = ($width - $dst_w)/2; } $src = $openfunc($src_img); $dst = $createfunc($nocut ? $width :$dst_w, $nocut ? $height :$dst_h); $white = imagecolorallocate($dst, 255, 255, 255); $buildfunc($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h); $otfunc($dst, $dst_img); imagedestroy($dst); imagedestroy($src); return true; }
$width / $height) { $dst_w = $width; $dst_h = $width / $src_t; $nocut && $y = ($height - $dst_h)/2; } else { $dst_w = $src_t * $height; $dst_h = $height; $nocut && $x = ($width - $dst_w)/2; } if(!$dst_img) { header ( "Content-type: " . image_type_to_mime_type( IMAGETYPE_JPEG )); } $src = $openfunc($src_img); $dst = $createfunc($nocut ? $width :$dst_w, $nocut ? $height :$dst_h); $white = imagecolorallocate($dst, 255, 255, 255); $buildfunc($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h); imagedestroy($src); // 水印 if($wmfunc && function_exists($wmfunc)) { $wm = $wmfunc($watermark); imagecopymergegray($dst, $wm, $x+$dst_w-$wm_w, $y+$dst_h-$wm_h, 0, 0, $wm_w, $wm_h, $wmpct); imagedestroy($wm); } $otfunc($dst, $dst_img); imagedestroy($dst); return true; }