【问题标题】:ImageMagick 6.5.4: Call to undefined method Imagick::readFromBlob()ImageMagick 6.5.4:调用未定义的方法 Imagick::readFromBlob()
【发布时间】:2013-08-25 14:17:15
【问题描述】:

我在尝试使用 ImageMagick 和 PHP 操作图像时遇到此错误。代码如下:

<?php

require 'config.php';

// Variables
$x = (int) $_POST['x'];
$y = (int) $_POST['y'];

$width = (int) $_POST['width'];
$height = (int) $_POST['height'];

// Source
$pos = strpos($_POST['src'], 'base64,') + 7;
$contents = base64_decode(substr($_POST['src'], $pos));

// Mime types
$types = array(
    'jpg' => 'image/jpeg',
    'png' => 'image/png',
    'gif' => 'image/gif'
);

// Data
$data = array(
    'mime' => substr($_POST['src'], 5, $pos - 13)
);

$data['ext'] = array_search($data['mime'], $types);

if (!$data['ext']) {
    $data['ext'] = 'png';
}

// Image
$image = new Imagick;

$image->readFromBlob($contents);

if ($data['ext'] == 'gif') {
    $frames = $image->coalesceImages();
} else {
    $frames = array($image);
}

foreach ($frames as $frame) {
    $image->resizeImage($width, $height, Imagick::FILTER_CATROM, 0);
    $image->cropImage($config['width'], $config['height'], $x, $y);
}

// Save
$path = $config['saveas'];

foreach ($data as $key => $value) {
    $path = str_replace('{' . $key . '}', $value, $path);
}

$path = dirname(__FILE__) . '/../../' . $path;

$image->writeImage($path, $data['ext'] == 'gif');

echo json_encode(true);

这是来自 phpinfo 的信息:

  • imagick 模块已启用
  • imagick 模块版本 3.1.0RC2
  • imagick 类 Imagick、ImagickDraw、ImagickPixel、 ImagickPixelIterator
  • ImageMagick 版本 ImageMagick 6.5.4-7 2012-05-07 Q16 OpenMP

在 chrome 中使用 F12 并处理小图像时,这完全是我的错误:

AJAX 错误 AvatarChanger.js:354

<br />
<b>Fatal error</b>:  Call to undefined method Imagick::readFromBlob() in        <b>/home/solidarity/cog/avatar/php/done.php</b> on line <b>37</b><br />

如果这里有人可以提供帮助或有任何想法,请分享:)

【问题讨论】:

    标签: php imagemagick


    【解决方案1】:

    没有readFromBlob 方法(正如错误消息所说),查看文档,您可以在那里找到readImageBlob()

    【讨论】:

    • 太棒了!但是我现在得到了这个:警告:Imagick::writeimage() 最多需要1个参数,2个在/home/solidarity/cog/avatar/php/done.php 在线 60
    • 您是否还在尝试阅读和理解这些错误消息?通过第二个参数后,您期望什么?它没有记录在任何地方,也不会影响文件的保存方式。在其他方法中需要第二个参数 - writeImages()(注意复数形式)。下次请尝试做一些研究。
    • 抱歉冒犯了你……我不会再寻求帮助了。
    • 你没有冒犯任何人,只是没有表现出为自己解决问题的努力。如果您继续提出此类问题,您的帐户可能会被暂停,或者人们将停止回答您的问题,因为我们大多数人都是来分享知识和经验的,而不是人工搜索助手。
    猜你喜欢
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2019-10-25
    • 2018-07-11
    • 2013-10-23
    相关资源
    最近更新 更多