我正在开发一个PHP项目,使用的是PHP版本5.4.7。该项目可以在线自定义图片,并在网站管理员中显示定制内容。图片格式为png。使用php原生函数Imagick来读取并将图像保存为pdf。
下面是我使用的代码片段。
我在Windows环境下使用XAMPP。
下面是我使用的代码片段。
$datadec = base64_decode($data);
$dpi = 300;
$printable_width = ($dims['printable_width'] * $dpi)/25.4;
$printable_height = ($dims['printable_height'] * $dpi)/25.4;
$im = new Imagick();
$im->setResolution(300, 300);
$im->readImageBlob($datadec);
$im->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$settings = include '../data/settings.php';
$format = $settings['print_format'];
但是出现了一个错误,错误如下:
类型:ImagickException 代码:420 消息: NoDecodeDelegateForThisImageFormat `' @ error/blob.c/BlobToImage/358
Slim的错误跟踪信息如下:
#0 C:\xampp\htdocs\XXXX\admin\controllers\OrdersController.php(151): Imagick->readimageblob('?PNG????????IHD...')
#1 C:\xampp\htdocs\XXXX\admin\controllers\OrdersController.php(305): OrdersController->convertHiRes('data:image/png;...', Array, '../storage/orde...')
#2 [internal function]: OrdersController->postPrint()
我对Imagick安装有些疑问,但大部分论坛都是基于Linux环境回答的。作为一个初学者,我不太了解这些命令。
更新
实际上,我是使用JavaScript从一个画布元素中获取到了图片:
var file = canvas.toDataURLWithMultiplier('png', multiplier, 1);
这个内容将会被发布到之前提到的PHP文件中... 在那里,我做了以下操作来设置$data...
list($type, $data) = explode(';', $image);
list(, $data) = explode(',', $data);
我在Windows环境下使用XAMPP。
$data
进行了编码?尝试过不使用base64_decode
直接使用$data
吗?$im->readImageBlob($data);
- moskito-x$data
的位置! - moskito-xbase64_encode($data);
在post
之前呢? - moskito-x