Как обрезать JPG и PNG с прозрачным фоном на JS / jQuery - PullRequest
0 голосов
/ 10 сентября 2011

Я использую плагин с именем "jcrop", это очень приятно, вы можете увидеть его здесь:

http://howhack.com/crop/demos/crop2.php

Проблема в том, что этот плагин не поддерживает png с прозрачнымФоны.

Есть ли подобный скрипт / плагин в javascript / jQuery, который поддерживает png с прозрачным фоном?

Мне нужен прямоугольник с соотношением сторон 16: 9 и конечное изображение всегда 640x360,вот почему я пытаюсь использовать этот "jcrop".

Ответы [ 2 ]

6 голосов
/ 10 сентября 2011

Я предполагаю, что плагин выполняет редактирование изображений на сервере через PHP?Если это так, вам нужно сделать несколько специальных вызовов, чтобы сохранить альфа-прозрачность в изображениях PNG:

$x = $_GET["x"];
$y = $_GET["y"];
$w = $_GET["w"];
$h = $_GET["h"];

// Load the original image.
$img = imagecreatefrompng($img_path);
imagealphablending($img, true);

// Create a blank canvas for the cropped image.
$img_cropped = imagecreatetruecolor($w, $h);
imagesavealpha($img_cropped, true);
imagealphablending($img_cropped, false);
$transparent = imagecolorallocatealpha($img_cropped, 0, 0, 0, 127);
imagefill($img_cropped, 0, 0, $transparent);

// Crop the image and store the data on the blank canvas.
imagecopyresampled($img_cropped, $img, 0, 0, $x, $y, $w, $h, $w, $h); // or imagecopy()

// Save the image.
imagepng($img_cropped, "image_cropped.png", 2);

// Free memory.
imagedestroy($img);
imagedestroy($img_cropped);

Это было затронуто несколько раз в обсуждении PHP imagecopyresampled () здесь .

0 голосов
/ 10 сентября 2011

Вы можете сделать это с canvas намного проще, и если вы хотите сохранить его, вы просто отправляете необработанные данные canvas на сервер по почте?http://www.nihilogic.dk/labs/canvas2image/

Но если вы хотите использовать этот плагин, я бы посоветовал вам взглянуть на конфигурацию php вашего сервера.Многие серверы по-прежнему поддерживают только jpeg и gif как часть своих конфигураций php по умолчанию.Если вы хотите проверить это, создайте php-файл с таким кодом:

phpinfo ();

?>

, а затем загрузите и просмотрите его наваш сервер.Вы должны искать «libpng» на странице: http://www.php.net/manual/en/image.requirements.php

...