PHP:如果图像太宽或太大而缩小尺寸并限制比例。

时间:2011-07-30 18:47:03

标签: php

我猜可能需要使用GD图像库,但我需要帮助指向正确的方向。

我在页面上显示图像,如果它的宽度超过800像素,我想将其缩小到800像素宽,但按比例缩放高度,如果超过600像素高,我想做同样的事情。

实现这一目标的最佳方式是什么?

3 个答案:

答案 0 :(得分:0)

您可以使用this class for resizing

答案 1 :(得分:0)

你可以先看看 exec("/usr/bin/convert {$current_image} -resize {$width}x{$height}\> -quality 100 $dest_image", $ret_val);
这将扩大但保持方面。完整的imageMagick命令行工具转换到这里:http://www.imagemagick.org/script/convert.php

答案 2 :(得分:0)

我有一个$ fileName(原始图像文件名),所需的$ width和$ height max值,调用resizeImage函数。然后,此函数创建一个名为$ final FileName的新文件。

resizeImage( imageCreateFrom( $fileName ),
             $finalFileName,
             $width,
             $height,
             false );

function resizeImage( $resSrc, $fileNameDst, $nwX, $nwY, $forceResize = true ) {
    $resSrcX = imagesx( $resSrc );
    $resSrcY = imagesy( $resSrc );
    if ( !$forceResize ) {
        if ( $resSrcX < $nwX ) {
            $nwX = $resSrcX;
        }
        if ( $resSrcY < $nwY ) {
            $nwY = $resSrcY;
        }
    }
    if ( $resSrcY / $resSrcX > $nwY / $nwX ) {
        $thumbY = $nwY;
        $thumbX = intval( $nwY * $resSrcX / $resSrcY );
    } else {
        $thumbX = $nwX;
        $thumbY = intval( $nwX * $resSrcY / $resSrcX );
    }
    $copyResource = imagecreatetruecolor( $thumbX, $thumbY );
    imagecopyresampled( $copyResource, $resSrc, 0, 0, 0, 0,
                        $thumbX, $thumbY,
                        $resSrcX, $resSrcY );
    preg_match( '#\.([^\.]*)$#', $fileNameDst, $match );
    $extension = $match[1];
    switch ( $extension ) {
        case 'gif':
            setTransparency( $copyResource, $resSrc );
            imagegif( $copyResource, $fileNameDst );
            break;
        case 'jpeg':
        case 'jpe':
        case 'jpg':
            imagejpeg( $copyResource, $fileNameDst );
            break;
        case 'png':
            setTransparency( $copyResource, $resSrc );
            imagepng( $copyResource, $fileNameDst );
            break;
    }
    imagedestroy( $copyResource );
}