0

画像と同じフォルダーで imagick basics を使用して php スクリプトを使用し、出力が完璧なファイル名を使用すると、PDF の最初のページの画像が出力されます。

// Read page 1 
$im = new imagick( 'Miami_Guide.pdf[0]' );
// Convert to png 
$im->setImageFormat( "png" );
// Send out
header( "Content-Type: image/png" );
echo $im;

ここに課題があります: このスクリプトを別のディレクトリに移動し、代わりにデータベース レコードから $uploaded というフィールド名を使用するにはどうすればよいでしょうか? 私はこれを試しましたが、うまくいきませんでした:

$path: '../../otherplace/';
// $uploaded is the field with the filename value
$fileloc: $path . $uploaded;
// Read page 1 
$im = new imagick( '$fileloc[0]' );
// Convert to png 
$im->setImageFormat( "png" );
// Send out 
header( "Content-Type: image/png" );
echo $im;

「致命的なエラー: Uncaught exception 'ImagickException' with message 'Unable to read the file: $fileloc' in /home/user/public_html/dir/folder/script.php:334 Stack trace: #0 /home/user が表示されます/public_html/dir/folder/script.php(334): Imagick->__construct('$fileloc') #1 /home/user/public_html/dir/folder/script.php(226): show_record(Array) #2 {main} が /home/user/public_html/dir/folder/script.php の 334 行目にスローされました

また、pathinfo() と致命的なエラーを再試行しました

私はいくつかの調整を行いましたが、今では Imagick は画像の代わりに意味不明なものを返しています:

$sourcePath = 'dir/folder/'; // Path of original image
$sourceUrl = 'http://www.site.com/';
$thumbPath = $sourcePath; // Writeable thumb path
$thumbUrl = $sourceUrl . $thumbPath . $uploaded ; 
$im = new Imagick($thumbUrl);
$im->setImageFormat( "jpg" );
$im->thumbnailImage(100, 100);
header("Content-type: image/jpg");
echo "$im";

「エラーはありません」が、画像ではなく意味不明なものを出力します。

ÿÛCÿÀdd"ÿÄÿÄ9 !1"#A2QVh'•¦Ôä$Waq±ÓÿÄÿÄ)!1Qq"A'Òar'¡áÿÚ?Íkßµ+¾;é=oÕÜŽW#ü–ÙænÝ»ë'çOo´OÒÝr2_^¬ÇiÓFãaR›5$ ò~\'0#Ïn¢—·©ÕuµðGMXÍ«ùÛæÿã'g§lfÍ,Ø"Sú*\Áw"h‡/qk,=Ýržzï–>~ÂÒútƒÔ«á3žŽã‹¶s8yd“4–ݤ®§ ‚ÇqW¼ºÎ£‹Áß~.—´¤ŸÅKn@ «DE ±gÄ©"hm&㥰öÔ«b¬........

何か助けはありますか?

4

2 に答える 2

0

最初の例が機能しない理由は、変数が二重引用符ではなく単一引用符で囲まれているためです。

これ:

$im = new imagick( '$fileloc[0]' );

という名前のファイルを探すように imagemagick に指示しますが$fileloc、もちろん存在しません。

代わりにこれを行います:

$im = new imagick( "$fileloc[0]" );

2番目の例については、何らかの理由$imで引用符を使用したため、問題が発生していると思いますecho。作業テストと同じ方法でエコーする必要があります。

echo $im;

いいえ

echo "$im";
于 2012-08-04T16:56:09.447 に答える
0

解決策は次のとおりです。

それ以外の:

echo $img;

エコーする必要があります:

echo "<img src='data:image/jpg;base64,".base64_encode($img)."' />";

これでImagickの問題が解決しました。他の人にも役立つことを願っています。

私が確認したことの 1 つは、基本をテストすることでした: test.pdf > test.jpg、またテスト: test.pdf > test.png、test.pdf > test.tiff - すべての拡張子がデリゲートと正常に動作するようになったので、別のディレクトリに移動し、別の場所からファイルを取得しました。

すべての手順の概要:

1- インストールされた imagick (php) - devel だったと思います

2- http:// を介してファイルへのパスを設定します

3-残りはほとんどImagickの基本でした:

 $pdfUrl = "http://www.site.com/dir/$file";
 $img = new Imagick($pdfUrl);
 $img->setImageFormat("jpeg");
 echo "<img src='data:image/jpg;base64,".base64_encode($img)."' />";
于 2012-08-08T19:47:07.423 に答える