php imagick - 从base64读取图像

sta*_*mas 5 php base64 imagick

我用js操纵图像,我想保存这些转换后的图像.我用ajax发布这个数据:

image : canvas.toDataURL('image/jpeg')
Run Code Online (Sandbox Code Playgroud)

这样,我得到了图像的base64代码,但我找不到用Imagick读取它的方法.

这是我的过程:

$img = new Imagick();
$decoded = base64_decode($_POST['image']);
$img->readimageblob($decoded);
Run Code Online (Sandbox Code Playgroud)

但这失败了:

致命错误:未捕获异常'ImagickException',消息'此图像格式没有解码委托',@ error/blob.c/BlobToImage/360'/ Library/WebServer/Files/test/save.php:7堆栈跟踪:

#0 /Library/WebServer/Documents/test/save.php(7):Imagick-> readimageblob('u?Z?f?{?? z ????? ...')

有什么想法吗?

sta*_*mas 12

想通了.

我不得不data:image/png;base64,从发布的字符串中删除部分,然后imagick可以将其解释为blob.


Tar*_*ars 5

readImageBlob \xe2\x80\x94 从二进制字符串读取图像:http://php.net/manual/en/imagick.readimageblob.php

\n\n
$base64 = "iVBORw0KGgoAAAAN....";\n\n$imageBlob = base64_decode($base64);\n\n$imagick = new Imagick();\n$imagick->readImageBlob($imageBlob);\n\nheader("Content-Type: image/png");\necho $imagick;\n
Run Code Online (Sandbox Code Playgroud)\n