Ejemplo n.º 1
0
/**
 *  创建头像动态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;
}
Ejemplo n.º 2
0
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;
}