imagecopyresampled 不工作不知道为什么

imagecopyresampled not working not sure why

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

!:example

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

 <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>

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

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

您可以通过更改源 xy 值来偏移块。示例:

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

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

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