因此,我尝试使用imagecopyresampled来裁剪照片的一部分,这样我就不必担心我的用户会将大于预期的照片上传到我的网站。不幸的是,我还没弄清楚为什么imagecopyresampled基本上表现得好像我只是使用CSS调整图像大小。根据我的理解,它应该只根据我提供给325X300 px jpg的坐标,将图像的一部分复制到0,0。
顶部图像是我使用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>
答案 0 :(得分:1)
主要是因为您的源大小是源图像的完整大小,所以它正在调整大小而不是取出一个大块。试试看我的意思:
imagecopyresampled($thumb, $image, 0, 0, 0, 0, $width, $height, $width, $height);
您可以通过更改源x
和y
值来抵消块。例如:
imagecopyresampled($thumb, $image, 0, 0, 50, 50, $width, $height, $width, $height);
答案 1 :(得分:0)
如果您要裁剪图像,则无需使用完整图像尺寸。
imagecopyresampled($thumb, $image, 0, 0, 0, 0, 325, 300, 325, 300);