1

我目前正在研究一个解决方案,我使用 jcrop 将图像裁剪为矩形,以便可以将其用作 3D 立方体的纹理(在 three.js 中) ,并且可以将裁剪区域保存为服务器上的图像。

这里的问题是,裁剪后的图像看起来不好,质量低。一开始我以为和DPI有关,因为它保存在96 DPI,但是我上传的一些图像也有96 dpi并且质量很好。

我认为这与jcrop有关。有人知道这个问题或对 jcrop 有任何经验吗?还是我应该使用不同的插件?

原始图像

裁剪图像

4

1 回答 1

0

你为什么不使用 php 调整图像系统。我在我的网站上使用它。

检查演示调整壁纸大小(检查屏幕拍摄):排灯节快乐壁纸

和原始壁纸(下载按钮以及页面下方的调整大小选项)排灯节壁纸

你可以用

function resize($newWidth, $targetFile, $originalFile) {

$info = getimagesize($originalFile);
$mime = $info['mime'];

switch ($mime) {
        case 'image/jpeg':
                $image_create_func = 'imagecreatefromjpeg';
                $image_save_func = 'imagejpeg';
                $new_image_ext = 'jpg';
                break;

        case 'image/png':
                $image_create_func = 'imagecreatefrompng';
                $image_save_func = 'imagepng';
                $new_image_ext = 'png';
                break;

        case 'image/gif':
                $image_create_func = 'imagecreatefromgif';
                $image_save_func = 'imagegif';
                $new_image_ext = 'gif';
                break;

        default: 
                throw new Exception('Unknown image type.');
}

$img = $image_create_func($originalFile);
list($width, $height) = getimagesize($originalFile);

$newHeight = ($height / $width) * $newWidth;
$tmp = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($tmp, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

if (file_exists($targetFile)) {
        unlink($targetFile);
}
$image_save_func($tmp, "$targetFile.$new_image_ext");

}

来源:使用 PHP 调整图像大小,支持 PNG、JPG

于 2016-10-12T18:40:58.543 回答