2013-08-25 3 views
0

У меня эта ошибка возникает при попытке манипулировать изображением с помощью ImageMagick и PHP. Вот код:ImageMagick 6.5.4: вызов неопределенного метода Imagick :: readFromBlob()

<?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

При использовании 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 /> 

Если кто-то здесь может помочь или есть какие-либо идеи, пожалуйста, поделитесь :)

ответ

1

там нет readFromBlob метода (так же, как говорится в сообщении об ошибке), проверьте документацию и там вы можете найти readImageBlob()

+0

Блестящий! Однако теперь я получаю это: Предупреждение: Imagick :: writeimage() ожидает, что в большинстве 1 параметр, 2 приведены в /home/solidarity/cog/avatar/php/done.php на линии
правда – Solidarity

+0

Вы даже пытаетесь прочитать и понять эти сообщения об ошибках? Что вы ожидаете после прохождения второго аргумента? Он нигде не документирован и не влияет на то, как файл будет сохранен. Второй параметр необходим в другом методе - 'writeImages()' (обратите внимание на множественную форму). В следующий раз попробуйте провести некоторое исследование. –

+0

Извиняюсь за то, что оскорбил вас ... Я больше не буду просить о помощи. – Solidarity

Смежные вопросы