PHP 裁剪 DataURL 和 return DataURL
PHP Crop DataURL and return DataURL
我正在尝试制作一个 PHP 脚本来裁剪一个 dataURL 和 return 另一个 dataURL,使用 GD 库,但我总是出错,我该如何解决?
if(isset($_GET['render'])) {
if((isset($_GET['render_x'])) && (isset($_GET['render_y']))) {
if(isset($_GET['dataURL'])) {
$image = $_GET['dataURL']; // the image to crop
$image = substr($image,22);
$img = imagecreatetruecolor('200','150');
$org_img = imagecreatefromstring(base64_decode($image));
imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150);
ob_start();
imagepng($img);
$image_data = ob_get_contents();
ob_end_clean ();
$image_data_base64 = base64_encode($image_data);
imagedestroy($img);
echo '<img src="data:image/png;base64,'.$image_data_base64.'" ><p>';
}
}
}
我该如何解决?我收到这些错误:
Warning: imagecreatefromstring(): gd warning: one parameter to a memory allocation multiplication is negative or zero, failing operation gracefully in xxx on line 29
Warning: imagecreatefromstring(): Passed data is not in 'WBMP' format in xxx on line 29
Warning: imagecreatefromstring(): Couldn't create GD Image Stream out of Data in xxx on line 29
Warning: imagecopy() expects parameter 2 to be resource, boolean given in
和一张黑色图片
编辑:$_GET['dataURL']值:data:image/png;base64,AAAFBfj42Pj4
我该如何解决?谢谢
我认为您应该在代码中省略 substr 部分。因为图像数据(图像类型)也很重要。
您的 url 的长度也限制为每个浏览器的一定数量的字符。所以为了保存,请将其控制在 2000 个字符以下。如果那不可能。按照@tacone 在他的评论中的建议,通过 post 获取图像的内容。
if(isset($_GET['render'])) {
if((isset($_GET['render_x'])) && (isset($_GET['render_y']))) {
if(isset($_GET['dataURL'])) {
$image = $_GET['dataURL']; // the image to crop
//$image = substr($image,22);
$img = imagecreatetruecolor('200','150');
$org_img = imagecreatefromstring(base64_decode($image));
imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150);
ob_start();
imagepng($img);
$image_data = ob_get_contents();
ob_end_clean ();
$image_data_base64 = base64_encode($image_data);
imagedestroy($img);
echo '<img src="data:image/png;base64,'.$image_data_base64.'" ><p>';
}
}
}
我正在尝试制作一个 PHP 脚本来裁剪一个 dataURL 和 return 另一个 dataURL,使用 GD 库,但我总是出错,我该如何解决?
if(isset($_GET['render'])) {
if((isset($_GET['render_x'])) && (isset($_GET['render_y']))) {
if(isset($_GET['dataURL'])) {
$image = $_GET['dataURL']; // the image to crop
$image = substr($image,22);
$img = imagecreatetruecolor('200','150');
$org_img = imagecreatefromstring(base64_decode($image));
imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150);
ob_start();
imagepng($img);
$image_data = ob_get_contents();
ob_end_clean ();
$image_data_base64 = base64_encode($image_data);
imagedestroy($img);
echo '<img src="data:image/png;base64,'.$image_data_base64.'" ><p>';
}
}
}
我该如何解决?我收到这些错误:
Warning: imagecreatefromstring(): gd warning: one parameter to a memory allocation multiplication is negative or zero, failing operation gracefully in xxx on line 29
Warning: imagecreatefromstring(): Passed data is not in 'WBMP' format in xxx on line 29
Warning: imagecreatefromstring(): Couldn't create GD Image Stream out of Data in xxx on line 29
Warning: imagecopy() expects parameter 2 to be resource, boolean given in
和一张黑色图片
编辑:$_GET['dataURL']值:data:image/png;base64,AAAFBfj42Pj4
我该如何解决?谢谢
我认为您应该在代码中省略 substr 部分。因为图像数据(图像类型)也很重要。
您的 url 的长度也限制为每个浏览器的一定数量的字符。所以为了保存,请将其控制在 2000 个字符以下。如果那不可能。按照@tacone 在他的评论中的建议,通过 post 获取图像的内容。
if(isset($_GET['render'])) {
if((isset($_GET['render_x'])) && (isset($_GET['render_y']))) {
if(isset($_GET['dataURL'])) {
$image = $_GET['dataURL']; // the image to crop
//$image = substr($image,22);
$img = imagecreatetruecolor('200','150');
$org_img = imagecreatefromstring(base64_decode($image));
imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150);
ob_start();
imagepng($img);
$image_data = ob_get_contents();
ob_end_clean ();
$image_data_base64 = base64_encode($image_data);
imagedestroy($img);
echo '<img src="data:image/png;base64,'.$image_data_base64.'" ><p>';
}
}
}