如何在JS / jQuery上使用透明背景裁剪JPG和PNG

时间:2011-09-09 23:04:37

标签: javascript jquery png crop jcrop

我正在使用一个名为“jcrop”的插件,它非常好,你可以在这里看到它:

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

问题是此插件不支持具有透明背景的png。

javascript / jQuery中是否有类似的脚本/插件支持具有透明背景的png?

我需要这个矩形比例为16:9且最终图像总是为640x360,这就是为什么我要尝试使用这个“jcrop”。

2 个答案:

答案 0 :(得分:6)

我假设插件通过PHP在服务器上进行图像编辑?如果是这样,您需要进行一些特殊调用以保留PNG图像中的Alpha透明度:

$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()here的讨论中,有几次涉及到这一点。

答案 1 :(得分:0)

你可以更容易地使用画布,如果你想保存它,你只需通过帖子将原始画布数据发送到服务器? http://www.nihilogic.dk/labs/canvas2image/

但是如果你想使用这个插件,我建议你看看服务器的php配置。许多服务器仍然只支持jpeg和gif作为其默认php配置的一部分。如果你想检查一下,用它中的代码制作一个php文件:

的phpinfo();

>

然后在您的服务器上上传并查看它。你应该在页面上找“libpng”: http://www.php.net/manual/en/image.requirements.php