我猜可能需要使用GD图像库,但我需要帮助指向正确的方向。
我在页面上显示图像,如果它的宽度超过800像素,我想将其缩小到800像素宽,但按比例缩放高度,如果超过600像素高,我想做同样的事情。
实现这一目标的最佳方式是什么?
答案 0 :(得分:0)
答案 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 );
}