縮小した画像を保存せずに、縮小してサイズ変更したサーバーに画像を表示する方法はありますか?画像が500x500250KBの場合のように、ユーザーのブラウザで50x5045kbを表示したいと思います。
方法がない場合、一時的に作成してフォルダに移動し、しばらくしてから削除するにはどうすればよいですか?
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のようなクラウドホスティングを使用すると、これを安価に行うことができます。
最も論理的なプロセスは、費用のかかる操作(写真のスケーリング)を複数回ではなく1回実行することです。
他の質問に答えるには、GDまたはimagemagickを使用して画像を縮小できます。これを行う方法については、何百ものチュートリアルがあります。このルートをたどりたいのなら、私はグーグルでチュートリアルをしてみます。
HTML画像タグの属性height
と属性を設定するだけのようです。width
<img src='blah' height=50 width=50 />
パーセンテージも使用できます。
CSSを使用すると、もう少し制御が可能になり、すべての画像(または特定のクラスのすべての画像)に適用できます。それを使用すると、特定することができmax-height
、max-width
小さい画像には影響しません。以下は、クラスのあるすべての画像に適用されますresizedimages
.resizedimages {max-height: 400px; max-width: 400px}
サイズ変更された画像を保存することに興味がない場合、これは完全にクライアント側の問題のように聞こえます。PHPはそれとは何の関係もありません(おそらく必要なHTMLをレンダリングすることを除いて)
注:ユーザーが右クリックして画像を保存すると、250kB全体になります。これらは純粋に表示の問題です。この側面があなたにとって重要であるならば、私は縮小されたコピーを保存する以外の方法を知りません。
これらはおそらく最高のリソースを借りていませんが、グーグルのトップ近くに出てきたものはほんのわずかです。
http://www.w3schools.com/tags/tag_img.asp
http://www.fastechws.com/tricks/web/image-max-width-height.php