
宜しくお願いします。
※ローカル環境です。
(WinXP PHP5 Smarty PEAR MySQL ※GDはインストされています。)
下記のコードで、サーバーにもともと上げてある画像(jpeg)を縮小して、
それをブラウザに表示させようと思います。
ですが、縮小されずに、元の画像サイズのまま表示されてしまいます。
おかしな点をご指摘下さいませ。
また、(1)で、
jpegファイルを取り込むコードがありますが、これは、
もし画像がGIFであったりPNGの場合を顧慮するなら、
取り込む際にそれぞれを判定するのが基本でしょうか?
もし、今回のようにサバー元の画像をリサイズするのであれば、拡張子もわかっていますので、
jpegファイルだけのことを考えればいいですが、
たとえば、任意のアップロードされたファイルを扱う場合は、上記3種類を判定すして処理すべきですよね?
以上、2点を回答下さいませ。
// -- (1)
// 画像を読み込む。
$file_path = "http://www元画像.com/img/aa.jpg";
$image = ImageCreateFromJPEG($file_path); //JPEGファイルを読み込む
/***********
$image = ImageCreateFromGIF($file_path); //GIFファイルを読み込む
$image = ImageCreateFromPNG($file_path); //PNGファイルを読み込む
************/
// -- (2)
// 画像のサイズを取得。
$width = ImageSX($image); //横幅(ピクセル)
$height = ImageSY($image); //縦幅(ピクセル)
// -- (3)
// 縮小した画像のサイズを決める。
$new_width = 100;
$rate = $new_width/$width; //圧縮比
$new_height = $rate*$height;
// -- (4)
// 空の画像を作成する。
$new_image = ImageCreateTrueColor($new_width, $new_height);
// -- (5)
// サンプリングしなおす
ImageCopyResampled($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height);
// -- (6)
// ブラウザに出力する場合。
ImageJPEG($image);
//ImageJPEG($image,'simpletext.jpg');
//ImageGIF($image); //環境によっては使えない
//ImagePNG($image);
// -- (7)
// メモリを解放する。
imagedestroy ($new_image);
imagedestroy ($image);
No.1ベストアンサー
- 回答日時:
元の画像サイズのまま表示される原因は「ImageJPEG($image);」で元の画像を出力しているからです。
「ImageJPEG($new_image);」で縮小した画像を出力できます。
画像の種類判別は、下記の関数で出来ます。
・exif_imagetype($filename)
http://jp2.php.net/manual/ja/function.exif-image …
・getimagesize($filename) の戻り値で2番目要素
http://jp2.php.net/manual/ja/function.getimagesi …
下記の関数なら、自動判別で画像を読み込むことが出来ます。
・imagecreatefromstring(file_get_contents($filename))
http://jp2.php.net/manual/ja/function.imagecreat …
この回答への補足
回答有難うございます!お蔭様で、解決できました!
ただ、画像の種類判別は、 getimagesize() を利用しようと思いますが、
現在、下記のように pathinfo を記述しております。
これだとダメでしょうか?
$imgpass = pathinfo($file_path);
$extension = $imgpass['extension']; //拡張子のみを取得
No.4
- 回答日時:
参考までに。
・image_type_to_mime_type($imagetype)
http://jp2.php.net/manual/ja/function.image-type …
・image_type_to_extension($imagetype)
http://jp2.php.net/manual/ja/function.image-type …
No.3
- 回答日時:
書き忘れたけど画像を出力するなら前もって
header("Content-type: image/画像形式");
としてヘッダを書いた方がいいよ。
この回答への補足
header("Content-type~・・・・ っという物をつけるのは、
なんとなくその意味がわかる程度で、正直なところ勉強不足です。
実はこの件に関しても疑問がありました。
今回の質問に記載したコードは、リサイズした画像を単にブラウザに出力する
だけのものになっています。
でも、実際は、特定のディレクトリにファイル名をつけて保存するようにします。
そして、Smartyにて開発しておりますので、
テンプレート側(HTML)に、その保存データーを<img>タグで引っ張ってきて表示させようと思っております。
そのため、
他のサイトでも、header("Content-type~・・・・ をつけるようにということを、
記載されていることが殆どですが、
今回のケースでは、
1、データーとしてディレクトリに保存
2、Smartyとの連携で、HTMLテンプレートに出力
という2つの観点から、phpファイルにheader("Content-type~・・・・を
書くのはおかしいのではと思い、記述しておりません。
header("Content-type~・・・・は、とても重要なものだと思いますが、
勉強不足のため、その確固たる意味合いを知らないのが、
こういった疑問に繋がっているのだと思います。
No.2
- 回答日時:
>現在、下記のように pathinfo を記述しております。
>これだとダメでしょうか?
>$imgpass = pathinfo($file_path);
>$extension = $imgpass['extension']; //拡張子のみを取得
これだと拡張子が偽装されていたり間違った拡張子になっていた場合には
判断できないですよね。
回答有難う御座います。
なるほど、では、
getimagesize() にて画像データーの配列を取得するようにします。
その後、
ifにてgif、jpg、pngを判定い、振り分けます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
自動で動くプログラミングについて
-
Web画像コピー不可にする方法
-
VBAでJPGサイズ変更
-
PHPによる画像の生成による色の...
-
ビットマップ画像を読み込むプ...
-
PHP echo バックスラッシュの使...
-
「imagejpeg」(GD)で作成した...
-
GDI+を使ったビット数とDPIの扱い
-
SQLiteに画像を格納したい
-
PHPで吐き出した画像にリンクを...
-
ListViewコントロールでサムネ...
-
PHP MySQLに画像を直接保存
-
VBSの「MsgBox」について
-
PHP+PostgreSQLを使ってPDFファ...
-
imageフォルダに、画像をリサイ...
-
PHPでhtmlファイル内のテキスト...
-
Perlで検索エンジン作成は可能!?
-
makefile でファイルをコピーす...
-
フォントの色を変えるには?
-
PHPを使った会員登録サイト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
iphoneで虫眼鏡の作り方
-
Illustratorで文字と画像を流し...
-
pictureboxに表示した画像のフ...
-
透過PNGが透過されない!!
-
GDI+を使ったビット数とDPIの扱い
-
VBAでJPGサイズ変更
-
PHPで吐き出した画像にリンクを...
-
ListViewコントロールでサムネ...
-
拡張子php画像をjpg画像等に変...
-
ビットマップ画像を読み込むプ...
-
C#とJavaで、MP3タグの画像を表...
-
SQLiteに画像を格納したい
-
手作業で埋め込んだ、UserForm1...
-
【PHP】サーバー上で TIFFをJPE...
-
BLOBデーターの画像の表示方法...
-
jar化すると画像が消える
-
「imagejpeg」(GD)で作成した...
-
PythonのTkinter詳しい方へ。画...
-
php,mysqlにて画像パス保存/表...
おすすめ情報