Jcrop: Как преодолеть изображения с низким разрешением после обрезки?

В настоящее время я работаю над решением, где я обрезаю изображение в прямоугольник, используя jcrop, чтобы я мог использовать его в качестве текстуры для 3D-куба (в three.js)И я могу сохранить обрезанную область как изображение на сервере.

Проблема здесь в том, что обрезанное изображение выглядит не очень хорошо, оно имеет низкое качество. Сначала я подумал, что это как-то связано с DPI, потому что он сохраняет в 96 DPI, но некоторые загружаемые изображения также имеют 96 dpi и имеют хорошее качество.

Я думаю, что это как-то связано с jcrop. Кто-нибудь знает или имел опыт работы с jcrop по этому вопросу? Или я должен использовать другой плагин?

Исходное изображение

Обрезанное изображение

1 ответ

Почему вы не используете php resize image system. Я использую это на моем сайте.

Проверьте демо изменение размера обоев (проверьте снимок экрана): Счастливые обои Дивали

и оригинальные обои (кнопка загрузки, а также опция изменения размера на странице ниже)

Вы можете использовать

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

Другие вопросы по тегам