源文件,目标文件,目标宽,目标高,是否允许剪裁。 如果目标写入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;
}










