imagecopyresampled不工作不知道为什么

时间:2015-02-13 05:40:48

标签: php css image jpeg php-gd

因此,我尝试使用imagecopyresampled来裁剪照片的一部分,这样我就不必担心我的用户会将大于预期的照片上传到我的网站。不幸的是,我还没弄清楚为什么imagecopyresampled基本上表现得好像我只是使用CSS调整图像大小。根据我的理解,它应该只根据我提供给325X300 px jpg的坐标,将图像的一部分复制到0,0。

example

顶部图像是我使用imagecopyresampled生成的图像。我的代码如下。只是想了解我在这里做错了什么,因为显然我的GD副本没有图像作用,否则我可能会使用它。

 <html>
 <style>
 .sample{
     width: 325;
     height: 300;
 }
 </style>
 <body>
 <?php
 $image = imagecreatefromjpeg('Image6.jpg');
 $filename = 'Thumbnail_Image6.jpeg';

 $width = 325;
 $height = 300;
 $oldwidth = imagesx($image);
 $oldheight = imagesy($image);
 if( $oldwidth > 325 || $oldheight > 300){
$thumb = ImageCreateTrueColor( 325, 300);
imagecopyresampled($thumb, $image, 0, 0, 0, 0, 325, 300, $oldwidth,    $oldheight);
imagejpeg($thumb, $filename, 100);
echo "<img src='".$filename."'><br>";
echo "<img class='sample' src='Image6.jpg'><br>";
 }
 ?>
 </body>

 </html>

2 个答案:

答案 0 :(得分:1)

主要是因为您的源大小是源图像的完整大小,所以它正在调整大小而不是取出一个大块。试试看我的意思:

imagecopyresampled($thumb, $image, 0, 0, 0, 0, $width, $height, $width, $height);

您可以通过更改源xy值来抵消块。例如:

imagecopyresampled($thumb, $image, 0, 0, 50, 50, $width, $height, $width, $height);

答案 1 :(得分:0)

如果您要裁剪图像,则无需使用完整图像尺寸。

imagecopyresampled($thumb, $image, 0, 0, 0, 0, 325, 300, 325, 300);