サーバーに保存せずに画像のサムネイルを生成できるようにしたい。これまでのところ、このコードを思いつきましたが、どうすればよいかわかりません$code
。
$code = system("convert galleries/13_0.jpg -resize 400x270 /dev/stdout");
$code
PHP/HTML にプラグインして生の画像コードを jpg として表示するにはどうすればよいですか?
サーバーに保存せずに画像のサムネイルを生成できるようにしたい。これまでのところ、このコードを思いつきましたが、どうすればよいかわかりません$code
。
$code = system("convert galleries/13_0.jpg -resize 400x270 /dev/stdout");
$code
PHP/HTML にプラグインして生の画像コードを jpg として表示するにはどうすればよいですか?
あなたが説明したように、システムからこれを行わないことをお勧めします。
PHPには、この種のことを行うためのライブラリがあります。
http://www.php.net/manual/en/ref.image.php。 http://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');
$code が生データの場合、データを書き出すが、ヘッダーのコンテンツ タイプを image/JPEG に設定する別のファイル getimage.php を作成できますか? たとえば、img src は getimage.php?image=13_0.jpg になりますか?
私はそれをメモリに保存し、それを読んでから削除します。/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);