1

サーバーに保存せずに画像のサムネイルを生成できるようにしたい。これまでのところ、このコードを思いつきましたが、どうすればよいかわかりません$code

$code = system("convert galleries/13_0.jpg -resize 400x270 /dev/stdout");

$codePHP/HTML にプラグインして生の画像コードを jpg として表示するにはどうすればよいですか?

4

3 に答える 3

1

あなたが説明したように、システムからこれを行わないことをお勧めします。

PHPには、この種のことを行うためのライブラリがあります。

http://www.php.net/manual/en/ref.image.phphttp://php.net/manual/en/book.imagick.php

また、これらのネイティブ関数をラップして画像を操作するライブラリもあります。https://imagine.readthedocs.org/en/latest/

そうすれば、すべてのコードが PHP にあり、何かを行うためにシステムに依存することはありません (PHP が記述されているようにライブラリを使用してコンパイルされている場合)。これらはほとんどの PHP ビルドで利用可能な標準ライブラリであり、含まれていない場合は有効にすることができます。 )。

編集:私はあなたを支持しています。

  • ソース画像を開きます。
  • ソース画像を変換する
  • ソース画像を返す

想像すると、次のようになります。

$imagine = new Imagine\Gd\Imagine();
$size    = new Imagine\Image\Box(400, 270);

$imagine->open('/path/to/large_image.jpg')
->resize($size)
->show('jpg');
于 2013-03-29T00:38:39.583 に答える
0

$code が生データの場合、データを書き出すが、ヘッダーのコンテンツ タイプを image/JPEG に設定する別のファイル getimage.php を作成できますか? たとえば、img src は getimage.php?image=13_0.jpg になりますか?

于 2013-03-29T00:37:50.470 に答える
0

私はそれをメモリに保存し、それを読んでから削除します。/dev/shmほとんどの Linux システムでは RAM ドライブです。

$tmp = '/dev/shm/'.uniqid('',true).'.jpg';
system("convert galleries/13_0.jpg -resize 400x270 $tmp");
header("Content-Type: image/jpeg");
header('Content-Length: '.filesize($tmp));
readfile($tmp);
unlink($tmp);
于 2013-03-29T05:27:59.203 に答える