8

我正在用js处理图像,我想保存这些转换后的图像。我正在使用 ajax 发布这些数据:

image : canvas.toDataURL('image/jpeg')

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

这是我的过程:

$img = new Imagick();
$decoded = base64_decode($_POST['image']);
$img->readimageblob($decoded);

但这失败了:

致命错误:/Library/WebServer/Documents/test/save.php:7 中的未捕获异常 'ImagickException' 和消息 'no decode delegate for this image format `' @ error/blob.c/BlobToImage/360' 堆栈跟踪:

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

任何想法为什么?

4

3 回答 3

14

想通了。

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

于 2012-08-14T17:40:23.867 回答
4

readImageBlob — 从二进制字符串中读取图像:http: //php.net/manual/en/imagick.readimageblob.php

$base64 = "iVBORw0KGgoAAAAN....";

$imageBlob = base64_decode($base64);

$imagick = new Imagick();
$imagick->readImageBlob($imageBlob);

header("Content-Type: image/png");
echo $imagick;
于 2017-02-14T02:08:12.740 回答
3

阅读此网址;--

PHP-Imagemagick 图片展示

或尝试一下:-

$thumbnail = $img->getImageBlob();
$contents =  ob_get_contents();
ob_end_clean();

echo "<img src='data:image/jpg;base64,".base64_encode($contents)."' />";
于 2012-08-14T17:32:27.403 回答