0

我正在使用这段代码中的 html2canvas 生成屏幕抓取 jpg。但是我不能针对特定的 div,所以我要抓住整个屏幕。

$canvasImg = $_POST['img'];
$data = base64_decode($canvasImg);
$File = "z.jpg"; 
$Handle = fopen($File, 'w');
fwrite($Handle, $data);  
fclose($Handle);


问题:如何裁剪图像?

这是我的尝试

$canvasImg = $_POST['img'];
$image = base64_decode($canvasImg);
$dest_image = 'z.jpg';
$img = imagecreatetruecolor('200','150');
$org_img = imagecreatefromstring($image);
$ims = getimagesize($image);
imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150);
imagejpeg($img,$dest_image,90);
imagedestroy($img);



但我得到一个错误
Warning: getimagesize(�PNG ) [<a href='function.getimagesize'>function.getimagesize</a>]: failed to open stream: Invalid argument

4

3 回答 3

1

你想要imagecreatefromstring();,没有imagecreatefrompng();。这会将其转换为 PHP 图像对象,然后您可以使用 JPEG 将其输出为imagejpeg();

于 2012-05-28T16:37:59.950 回答
1

您的问题在于您将 PNG 的缓冲区传递给函数。因此,为什么您会得到 PNG 的幻数(89 50 4e 47 0d 0a 1a 0a ---OR--- 0x89 "PNG" CR LF 0x1A LF)。您需要将文件保存到临时位置并将该位置传递给 getimagesize 等。因此,他们为什么抱怨溪流。

您可以使用imagecreatefromstring(...)which 将获取缓冲区并输出资源句柄。

于 2012-05-28T16:38:07.890 回答
0

的第一个参数getimagesize($image);必须是图像的文件名。

于 2012-05-28T16:44:44.570 回答