/** * 创建头像动态gif缩略图 * @param $imageSource * @param $srcW * @param $srcH * @param $dstW * @param $dstH */ function makeAvatarGifThumb($imageSource, $srcW, $srcH, $dstW, $dstH) { if ($srcW <= $dstW && $srcH <= $dstH) { return $imageSource; } $imageSource = imagecreatefromstring($imageSource); list($imagecreate, $imagecopyre) = GetImageCreate('gif'); if ($srcW / $dstW < $srcH / $dstH) { $finalW = round($dstH / $srcH * $srcW); $finalH = $dstH; } elseif ($srcW / $dstW > $srcH / $dstH) { $finalW = $dstW; $finalH = round($dstW / $srcW * $srcH); } else { $finalW = $dstW; $finalH = $dstH; } $thumb = $imagecreate($finalW, $finalH); if (function_exists('ImageColorAllocate') && function_exists('ImageColorTransparent')) { //背景透明处理 $black = ImageColorAllocate($thumb, 0, 0, 0); $bgTransparent = ImageColorTransparent($thumb, $black); } $imagecopyre($thumb, $imageSource, 0, 0, 0, 0, $finalW, $finalH, $srcW, $srcH); ob_start(); imagegif($thumb); imagedestroy($thumb); $imageStream = ob_get_contents(); ob_end_clean(); return $imageStream; }
function modeImageThumb($srcFile, $dstFile, $dstX, $dstY) { $imgdata = array(); list($imgdata['width'], $imgdata['height'], $imgdata['type']) = getimagesize($srcFile); switch ($imgdata['type']) { case 1: $imgdata['type'] = 'gif'; break; case 2: $imgdata['type'] = 'jpeg'; break; case 3: $imgdata['type'] = 'png'; break; default: return false; } if (!empty($imgdata) && function_exists('imagecreatefrom' . $imgdata['type'])) { $imagecreatefromtype = 'imagecreatefrom' . $imgdata['type']; } else { return false; } $imgdata['source'] = $imagecreatefromtype($srcFile); !$imgdata['width'] && ($imgdata['width'] = imagesx($imgdata['source'])); !$imgdata['height'] && ($imgdata['height'] = imagesy($imgdata['source'])); list($imagecreate, $imagecopyre) = GetImageCreate($imgdata['type']); $thumb = $imagecreate($dstX, $dstY); $color = @ImageColorAllocate($thumb, 255, 255, 255); @imagefilledrectangle($thumb, 0, 0, $dstX, $dstY, $color); $pX = $pY = $pW = $pH = 0; if ($imgdata['width'] < $dstX && $imgdata['height'] < $dstY) { $pW = $imgdata['width']; $pH = $imgdata['height']; } else { if ($imgdata['width'] / $imgdata['height'] > $dstX / $dstY) { $pW = $dstX; $pH = round($dstX * $imgdata['height'] / $imgdata['width']); } else { $pH = $dstY; $pW = round($dstY * $imgdata['width'] / $imgdata['height']); } } $pX = round(($dstX - $pW) / 2); $pY = round(($dstY - $pH) / 2); $imagecopyre($thumb, $imgdata['source'], $pX, $pY, 0, 0, $pW, $pH, $imgdata['width'], $imgdata['height']); MakeImage($imgdata['type'], $thumb, $dstFile); imagedestroy($thumb); return 1; }