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 などに渡す必要があります。したがって、彼らがストリームについて不平を言う理由。

which を使用imagecreatefromstring(...)して、バッファーを取得し、リソースへのハンドルを出力できます。

于 2012-05-28T16:38:07.890 に答える
0

の最初のパラメータは、画像のファイル名getimagesize($image);でなければなりません。

于 2012-05-28T16:44:44.570 に答える