画像を表示するPHP縮小およびサイズ変更
質問
縮小されたものを保存せずに、縮小およびサイズ変更された画像を表示する方法はありますか?画像が500x500 250kbの場合と同様に、ユーザーのブラウザに50x50 45kbを表示したいと思います。
方法がない場合、どのようにしてフォルダーに移動して削除するために一時的に作成して、しばらくしてから削除できますか?
解決
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg($url);
$thumbImage = imagecreatetruecolor(50, 50);
imagecopyresized($thumbImage, $image, 0, 0, 0, 0, 50, 50, 500, 500);
imagejpeg($thumbImage,"",85);
imagedestroy($image);
imagedestroy($thumbImage);
ただし、結果をキャッシュして、サーバーの負荷を下げる必要があります。
他のヒント
アップロード時に小さなバージョンを保存して元のバージョンを保持する大きな画像をサイズ変更しようとするのではなく、強くお勧めします。 S3のようなクラウドホスティングを使用すると、これを安く実行できます。
最も論理的なプロセスは、複数回ではなく、高価な操作(写真をスケーリング)を実行することです。
他の質問への回答として、GDまたはImageMagickを使用して画像をスケーリングできます。これを行う方法に関する数百のチュートリアルがあります。このルートを下りたい場合は、チュートリアルをグーグルで検索し、試してみます。
あなたがしたいのは、 height
と width
HTML画像タグの属性。
<img src='blah' height=50 width=50 />
パーセンテージも使用できます。
CSSは、もう少し制御できるようになり、すべての画像(または特定のクラスのすべての画像)に適用できます。それを使用すると、特定できます max-height
と max-width
小さな画像には影響しません。以下は、クラスのあるすべての画像に適用されます resizedimages
.resizedimages {max-height: 400px; max-width: 400px}
サイズ変更された画像を保存することに興味がない場合は、これは完全にクライアント側の問題のように聞こえます。 PHPはそれとは何の関係もありません(おそらく必要なHTMLをレンダリングすることを除いて)
注:ユーザーが右クリックして画像を保存すると、完全な250kbになります。これらは純粋に表示される問題です。この側面があなたにとって重要である場合、私は削減されたコピーを保存する以外の方法を知りません。
これらはおそらく最高のリソースであり、Googleの最上部近くに出てきたほんの数件です。
http://www.w3schools.com/tags/tag_img.asp
http://www.fastechws.com/tricks/web/image-max-width-height.php