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);
您可以通过更改源 x
和 y
值来偏移块。示例:
imagecopyresampled($thumb, $image, 0, 0, 50, 50, $width, $height, $width, $height);
如果您要裁剪图像,则不需要使用完整图像尺寸。
imagecopyresampled($thumb, $image, 0, 0, 0, 0, 325, 300, 325, 300);
所以我尝试使用 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);
您可以通过更改源 x
和 y
值来偏移块。示例:
imagecopyresampled($thumb, $image, 0, 0, 50, 50, $width, $height, $width, $height);
如果您要裁剪图像,则不需要使用完整图像尺寸。
imagecopyresampled($thumb, $image, 0, 0, 0, 0, 325, 300, 325, 300);