我没有太多的时间来写,所以会告诉你我的问题,我有一个PHP代码,裁剪图像的好处是,当我把$ thumb_width和$ thumb_height与相同的值放在一起时它真的很好,但在这种情况下,我不是我想要这个分辨率的图像(200 * 150) 这是代码,我找不到错误。
<?php
function create_thumb($directory, $image, $destination) {
$image_file = $image;
$image = $directory.$image;
if (file_exists($image)) {
$source_size = getimagesize($image);
if ($source_size !== false) {
$thumb_width = 200;
$thumb_height = 150;
switch($source_size['mime']) {
case 'image/jpeg':
$source = imagecreatefromjpeg($image);
break;
case 'image/png':
$source = imagecreatefrompng($image);
break;
case 'image/gif':
$source = imagecreatefromgif($image);
break;
}
$source_aspect = round(($source_size[0] / $source_size[1]), 1);
$thumb_aspect = round(($thumb_width / $thumb_height), 1);
if ($source_aspect < $thumb_aspect) {
$new_size = array($thumb_width, ($thumb_width / $source_size[0]) * $source_size[1]);
$source_pos = array(0, ($new_size[1] - $thumb_height) / 2);
} else if ($source_aspect > $thumb_aspect) {
$new_size = array(($thumb_width / $source_size[1]) * $source_size[0], $thumb_height);
$source_pos = array(($new_size[0] - $thumb_width) / 2, 0);
} else {
$new_size = array($thumb_width, $thumb_height);
$source_pos = array(0, 0);
}
if ($new_size[0] < 1) $new_size[0] = 1;
if ($new_size[1] < 1) $new_size[1] = 1;
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresampled($thumb, $source, 0, 0, $source_pos[0], $source_pos[1], $new_size[0], $new_size[1], $source_size[0], $source_size[1]);
switch($source_size['mime']) {
case 'image/jpeg':
imagejpeg($thumb, $destination.$image_file);
break;
case 'image/png':
imagepng($thumb, $destination.$image_file);
break;
case 'image/gif':
imagegif($thumb, $destination.$image_file);
break;
}
}
}
}
?>
在这个例子中,如果我放了一个(533px * 300px)的图像,它会变形,包裹着“抱歉我的英文=)”,请我帮忙。如果找到解决方案,我会非常满意。
谢谢Matias。
答案 0 :(得分:1)
这个id dilli。
在第46行,您提供了更多空格,因此您需要删除该行中不需要的空格。
答案 1 :(得分:0)
是。即使我们给出多个空格,通常只有一个空格。但是这里存在像“&amp; nbsp”的多个空格。
语法不正确:imagecopyresampled($ thumb,$ source,0,0,$ source_pos [0],$ source_pos [1],$ new_size [0],$ new_size [1],$ source_size [0],$ source_size [1]);
正确的语法:imagecopyresampled($ thumb,$ source,0,0,$ source_pos [0],$ source_pos [1],$ new_size [0],$ new_size [1],$ source_size [0],$ source_size [1]);