为什么在使用 PHP 和 Imagick 调用 getImageBlob 时会出现分段错误?
Why do I get a Segmentation Fault when calling getImageBlob with PHP and Imagick?
我在内存中有一个 JPEG 图像 blob 字符串,并将其加载到一个 Imagick 对象中。然后我将它调整为缩略图,压缩它等。当我将新缩略图写入磁盘时,它工作正常并且我可以看到该文件。当我尝试从 Imagick 获取 Blob 字符串时,它总是会抛出一个分段错误。我永远不需要将这些文件写入磁盘。我从 URL 获取它们,调整它们的大小,然后将图像 blob 字符串推送到 Amazon S3 key/value 存储桶。
为什么会抛出 Segemntation Fault,我该如何解决?
这是我的代码:
$photo['Data'] = file_get_contents('image_url'); // this works
$Image = new Imagick();
$Image->readImageBlob($photo['Data']);
$Image->scaleImage( 160, 0 );
$Image->setImageCompression( Imagick::COMPRESSION_JPEG );
$Image->setImageCompressionQuality( 60 );
$Image->setImageUnits( imagick::RESOLUTION_PIXELSPERINCH );
$Image->setImageResolution( 72, 72 );
$Image->stripImage();
$Image->writeImage('test.jpg'); // this produces a good thumbnail
$thumb['data'] = $Image->getImageBlob; // this throws a segmentation fault
Imagick 版本信息
来自sudo yum info php-pecl-imagick
的输出
Loaded plugins: priorities, update-motd, upgrade-helper
Installed Packages
Name : php-pecl-imagick
Arch : x86_64
Version : 3.1.0
Release : 0.2.RC1.6.amzn1
Size : 418 k
Repo : installed
From repo : amzn-main
Summary : Provides a wrapper to the ImageMagick library
URL : http://pecl.php.net/package/imagick
License : PHP
Description : imagick is a native php extension to create and modify images using the
: ImageMagick API.
: This extension requires ImageMagick version 6.2.4+ and PHP 5.1.3+.
:
: IMPORTANT: Version 2.x API is not compatible with earlier versions.
轻松修复。
getImageBlob
是一个 PHP 函数,需要有括号。调用 $Image->getImageBlob()
有效,而调用 $Image->getImageBlob
会导致分段错误。
我在内存中有一个 JPEG 图像 blob 字符串,并将其加载到一个 Imagick 对象中。然后我将它调整为缩略图,压缩它等。当我将新缩略图写入磁盘时,它工作正常并且我可以看到该文件。当我尝试从 Imagick 获取 Blob 字符串时,它总是会抛出一个分段错误。我永远不需要将这些文件写入磁盘。我从 URL 获取它们,调整它们的大小,然后将图像 blob 字符串推送到 Amazon S3 key/value 存储桶。
为什么会抛出 Segemntation Fault,我该如何解决?
这是我的代码:
$photo['Data'] = file_get_contents('image_url'); // this works
$Image = new Imagick();
$Image->readImageBlob($photo['Data']);
$Image->scaleImage( 160, 0 );
$Image->setImageCompression( Imagick::COMPRESSION_JPEG );
$Image->setImageCompressionQuality( 60 );
$Image->setImageUnits( imagick::RESOLUTION_PIXELSPERINCH );
$Image->setImageResolution( 72, 72 );
$Image->stripImage();
$Image->writeImage('test.jpg'); // this produces a good thumbnail
$thumb['data'] = $Image->getImageBlob; // this throws a segmentation fault
Imagick 版本信息
来自sudo yum info php-pecl-imagick
Loaded plugins: priorities, update-motd, upgrade-helper
Installed Packages
Name : php-pecl-imagick
Arch : x86_64
Version : 3.1.0
Release : 0.2.RC1.6.amzn1
Size : 418 k
Repo : installed
From repo : amzn-main
Summary : Provides a wrapper to the ImageMagick library
URL : http://pecl.php.net/package/imagick
License : PHP
Description : imagick is a native php extension to create and modify images using the
: ImageMagick API.
: This extension requires ImageMagick version 6.2.4+ and PHP 5.1.3+.
:
: IMPORTANT: Version 2.x API is not compatible with earlier versions.
轻松修复。
getImageBlob
是一个 PHP 函数,需要有括号。调用 $Image->getImageBlob()
有效,而调用 $Image->getImageBlob
会导致分段错误。