为了账号安全,请及时绑定邮箱和手机立即绑定

用PHP裁剪图像

用PHP裁剪图像

PHP
动漫人物 2019-11-07 10:43:26
下面的代码可以很好地裁剪图像,这是我想要的,但是对于较大的图像,它也可以正常工作。有什么办法可以缩小图像吗?想法是,在裁剪之前,我将能够使每个图像的大小大致相同,以便每次都能获得良好的效果代码是<?php$image = $_GET['src']; // the image to crop$dest_image = 'images/cropped_whatever.jpg'; // make sure the directory is writeable$img = imagecreatetruecolor('200','150');$org_img = imagecreatefromjpeg($image);$ims = getimagesize($image);imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150);imagejpeg($img,$dest_image,90);imagedestroy($img);echo '<img src="'.$dest_image.'" ><p>';
查看完整描述

3 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

如果要生成缩略图,则必须首先使用调整图像大小imagecopyresampled();。您必须调整图像的大小,以使图像较小侧的尺寸等于拇指的相应侧。


例如,如果源图像为1280x800px,拇指为200x150px,则必须将图像的尺寸调整为240x150px,然后将其裁剪为200x150px。这样一来,图像的长宽比就不会改变。


这是创建缩略图的一般公式:


$image = imagecreatefromjpeg($_GET['src']);

$filename = 'images/cropped_whatever.jpg';


$thumb_width = 200;

$thumb_height = 150;


$width = imagesx($image);

$height = imagesy($image);


$original_aspect = $width / $height;

$thumb_aspect = $thumb_width / $thumb_height;


if ( $original_aspect >= $thumb_aspect )

{

   // If image is wider than thumbnail (in aspect ratio sense)

   $new_height = $thumb_height;

   $new_width = $width / ($height / $thumb_height);

}

else

{

   // If the thumbnail is wider than the image

   $new_width = $thumb_width;

   $new_height = $height / ($width / $thumb_width);

}


$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );


// Resize and crop

imagecopyresampled($thumb,

                   $image,

                   0 - ($new_width - $thumb_width) / 2, // Center the image horizontally

                   0 - ($new_height - $thumb_height) / 2, // Center the image vertically

                   0, 0,

                   $new_width, $new_height,

                   $width, $height);

imagejpeg($thumb, $filename, 80);

还没有测试过,但是应该可以。


编辑


现在经过测试并可以工作。


查看完整回答
反对 回复 2019-11-07
  • 3 回答
  • 0 关注
  • 386 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信