0

gmagick は、より多くの機能を備えた新しいバージョンの imagemagick です。リソース集約型ではなく、高速ですが、問題は、この素晴らしいツールに関する Web での議論がほとんどないことです。最近 http://devzone.zend.com/1559でこれに出会いました。 /manipulating-images-with-php-and-graphicsmagick/ しかし、phpizeが機能しなかったため、Windowsマシンにインストールできませんでした。そのため、他の方法とphpinfoページにアクセスする方法をいくつか試しましたが、それ以上機能させることができませんでしたgmagickで単一の画像を開くことすらできません。これは私が使用したコードです

     <?php
     $path="gallery/img1.jpg";
     // initialize object
     $image = new Gmagick($path);
     echo $image;
    // read image file
   $file = 'gallery/img1.jpg';
   $image->readImage($file);
   echo '<img src="' . $file . '" width="200" height="150" /> <br/>';
   ?>

このコードを使用して gmagick クラスをインスタンス化し、画像を開きましたが、次のように非常に大きなエラーが発生しています Fatal error: Uncaught exception 'GmagickException' with message 'Unable to open file (gallery/img1.jpg)' in C:\xampp\htdocs \junk\imgproc\imgproc1.php:4 スタックトレース: #0 C:\xampp\htdocs\junk\imgproc\imgproc1.php(4): Gmagick->__construct('gallery/img1.jp...') # 1 {main} が C:\xampp\htdocs\junk\imgproc\imgproc1.php の 4 行目にスローされる

4

1 に答える 1

3

A) 見出しの質問に答えるには (他の読者をここに導くかもしれません):

PHP 用の GraphicsMagick 拡張機能の Windows ビルドは、http: //valokuva.org/builds/から入手できます。

phpinfo();Web サーバーの出力を見て、スレッドセーフ バージョンが必要かどうかを確認します。エントリを探しThread Safetyます。エントリPHP Extension Buildには、必要な VC バージョンAPI20090626,TS,VC9(VC9 など) も含まれているはずです。

条件に一致する最新のビルドをダウンロードし、PHP/ext ディレクトリに置き、次のように php.ini に追加します。

extension=php_gmagick_ts.dll

TS 以外のバージョンを使用する場合は、忘れずに dll の名前を修正してください。

Apache を再起動して確認しphpinfo();ます。gmagick今はブロックがあるはずです..

B) コードの問題を修正するには:

  1. Gmagick コンストラクターは、パラメーターとしてパスを想定していませんが、完全なイメージ ファイル名 (パスを含む場合があります) を想定しています。ほとんどの場合、空のままにして、readImage()呼び出しでファイルを提供することをお勧めします。
  2. 完全な $path (ルートから始まる) を試して、 and で使用しreadImage()ますwriteImage()

動作するコードの例を次に示します。

<?php
// assuming this is the path to your code and to your image files
$path = 'C:\xampp\htdocs\junk\imgproc\';

$image = new Gmagick();
$file = 'img1.jpg';
$image->readImage($path.$file);

// The rest of your code does not make any use of the GM instance, 
// so I add something functional here: create a grayscale version and show it
$fileOut= 'img1_GRAY.jpg';
$image->setImageType(Gmagick::IMGTYPE_GRAYSCALE);
$image->writeImage($path.$fileOut);
$image->destroy();
echo "<img src='$fileOut' >";
?>

画像ファイルのグレースケール バージョンが表示されます。

于 2012-09-18T12:55:32.623 に答える