- 締切済み
ホームページでの画像表示について
この度、賃貸物件検索サイトをpostgres & phpを用いて作成しています。 同時に携帯サイトも作成し、WEBのホームページと携帯版のホームページで同じ情報を表示させる予定です。 WEB版に登録した画像(解像度72、サイズは200*300程度)のファイルを携帯版にも流用したいのですが、どうしたらよいのか分かりません…。 そのまま表示させたのではサイズ、容量ともに携帯では表示できません。 関数等で画像の解像度を下げる事は不可能なのでしょうか? やはり携帯用には、小さな画像を登録しなおす必要があるのでしょうか? どうか、よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ryu_d
- ベストアンサー率58% (33/56)
PHPから出来ますよ。 #1の方がおっしゃっているGDを用いれば。 GDとjpegとかpngとか使う画像のライブラリをインストールしておく必要がありますが。でPHPをリコンパイルですかね サンプル乗せときます。 このサンプルは元のイメージサイズを半分にするサンプルです。 出力は直接ブラウザに吐き出します。 コメントは今入れたのでPHPでは適切にコメントアウトしてください。 --------------ここから--------------- 元データのサイズ取得 $imgsize = getimagesize("test.jpg"); 元データサイズセット $imgwidth = $imgsize[0]; $imgheight = $imgsize[1]; 元データを1/2 $newheight = $imgheight/2; $newwidth = $imgwidth/2; jpegで元イメージを呼んでメモリにセット $image = imagecreatefromjpeg("test.jpg"); 新しいイメージ領域をつくって $newimage = imagecreate($newwidth,$newheight); 色の設定(フルカラー使う) $newimage = imagecreatetruecolor($newwidth,$newheight); 元イメージバッファから新イメージバッファへリサイズしてコピー imagecopyresampled($newimage,$image,0,0,0,0,$newwidth,$newheight,$imgwidth,$imgheight); ブラウザに直接吐くので、コンテンツタイプセット header("Content-type: image/png"); jpegデータからpng形式に変換してイメージ吐き出し (実際にはここで変換してるわけじゃないけど) imagepng($newimage); 元イメージバッファの開放 imagedestroy($image); 新イメージバッファの開放 imagedestroy($newimage); -----------------ここまで---------------- エラー等の処理は入ってません。 以上
- mi-si
- ベストアンサー率35% (200/567)
Perl+GDライブラリの組み合わせで画像のリサイズは可能です。(PostgreSQLからPerlを呼び出せた気もしますが・・・。) ただ、サーバー上で逐一画像の操作を行うのは、サーバーに負荷をかけるのでデータはあらかじめ両方持っている方が良いかと思います。画像を登録すると縮小画像を自動的に生成するスクリプトなどを作っておくと楽かと思います。 #他の言語とRDBMSの組み合わせならいくらか作ってことがあるので解るんですけど。