11

次のようにpdfサムネイルを作成するphpコードがあります。

<?php
$file ="test.pdf";
$im = new imagick(realpath($file).'[0]');
$im->setImageFormat("png");
$im->resizeImage(200,200,1,0);
header("Content-Type: image/jpeg");
$thumbnail = $im->getImageBlob();
echo $thumbnail;
?>

これはうまく機能しています。しかし、Web ページに画像を表示したい場合は、<img src="">タグを使用する必要があります。..header("Content-Type: image/jpeg"); を使用して構文とエコー画像から削除する方法はありますか? <img src="">または、構文を使用して Web ページ内に画像を表示する方法を教えてください。

Windows Vista PC で php5 を使用して apache を実行しています。

4

7 に答える 7

13

Imagick では、base64 エンコーディングを使用できます。

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

ただし、この方法はちょっと遅いので、早めに画像を生成して保存することをお勧めし$img->writeImage($path)ます。

于 2012-11-22T14:18:28.757 に答える
12

この方法で画像を表示することができます:

// start buffering
ob_start();
$thumbnail = $im->getImageBlob();
$contents =  ob_get_contents();
ob_end_clean();

echo "<img src='data:image/jpg;base64,".base64_encode($contents)."' />";
于 2011-05-22T13:32:37.960 に答える
5

base64を使用して画像を埋め込むことは、特に問題を解決するための完全に間違った方法です. PHP Web スクリプトのようなステートレスなものを使用します。

代わりに http パラメータを使用して、2 つのタスクを実行できる単一の php ファイルを作成する必要があります。デフォルトでは html が送信され、パラメータは php ファイルに画像を印刷するように指示します。以下は、それを行う「標準的な」方法です-

<?php
if (!array_key_exists('display',$_GET))
{
    print('<html><head></head><body><img src="'.$_SERVER['PHP_SELF'].'?display=image"></body></html>');
} else
{
    // The display key exists which means we want to display an image
    $file ="test.pdf";
    $im = new imagick(realpath($file).'[0]');
    $im->setImageFormat("png");
    $im->resizeImage(200,200,1,0);
    header("Content-Type: image/jpeg");
    $thumbnail = $im->getImageBlob();
    echo $thumbnail;
}
?>
于 2012-11-29T11:38:39.817 に答える
3

生の画像をページに埋め込むことができます。ページ構文の例については、以下のブログ エントリを参照してください。

http://www.sveinbjorn.org/news/2005-11-28-02-39-23

しかし、サムネイルをファイルシステムに保存して通常のファイルとして提供する方が生産的だと思います。そうしないと、ページにアクセスするたびにサムネイルが生成されます。誰かがこの PDF ファイルをアップロードした可能性があるため、アップロード時にサムネイルを生成することもできます。

于 2011-05-22T13:33:02.080 に答える
0

唯一の解決策は、イメージを base64 に変換し、埋め込み base64 イメージとして含めることです ( data:image/png;base64,)。さらに参照

ただし、これは IE 6 および 7 ではサポートされていません。

于 2011-05-22T13:35:50.770 に答える