我正在使用此代码中的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
答案 0 :(得分:1)
您需要imagecreatefromstring();
,而不是imagecreatefrompng();
。这将把它变成一个PHP图像对象,然后使用imagejpeg();
答案 1 :(得分:1)
您的问题表明您正在将PNG的缓冲区传递给该函数。因此,为什么你得到PNG的幻数(89 50 4e 47 0d 0a 1a 0a --- OR --- 0x89“PNG”CR LF 0x1A LF)。您需要将文件保存到临时位置并将位置传递给getimagesize等。因此他们为什么抱怨流。
您可以使用imagecreatefromstring(...)
来获取缓冲区并输出资源句柄。
答案 2 :(得分:0)
getimagesize($image);
的第一个参数必须是图片的文件名。