またまた質問よろしくお願いいたします。
現在『基礎からのPHP』という本に記載されている画像掲示板を書き写してやってみてるのですが、
サムネイル生成について、本ではjpgのみで書かれていますが、gifも付け足したいと思い、やってみたのですが、gif画像が縮小されず元サイズのままimgフォルダにも保存されてしまってます。
それでgifのみでやるとどうかと思って、元のコードのjpgのところをgifに書き換えてやってみたのですが、それでも縮小されません(jpgならうまくいきます)。
この理由がわかりますでしょうか?そのコードは以下です。
//アップロードされた画像ファイルを移動
$ima = date('YmdHis');
$fn = $ima . $file['name'];
move_uploaded_file($file['tmp_name'], './gz_img/'.$fn);
//サムネイルの作成
$motogazo = "";
$motogazo = imagecreatefromgif(dirname(__FILE__) . "./gz_img/$fn");
if(!$motogazo){
print "<p>メモリ不足です。<br>
ファイルサイズを小さくしてから再度送信してください。</p>
<p><a href='g_up,php'>アップロード画面に戻る</a></p>";
} else{
list($w,$h) = getimagesize(dirname(__FILE__) . "./gz_img/$fn");
if($file['size'] > 100 * 100){
$new_h = 100;
$new_w = $w * 100 / $h;
} else{
$new_h = $h;
$new_w = $w;
}
$mythumb = imagecreatetruecolor($new_w,$new_h);
$bg = imagecolorallocate($mythumb, 255, 255, 255); //背景用の白作成(ここはgifの背景が黒くなるのを防ぐため付け足しました)
imagefill($mythumb, 0, 0, $bg); //背景を白で塗りつぶす(ここもgif用に付け足しました)
imagecopyresized($mythumb,$motogazo,0,0,0,0,$new_w,$new_h,$w,$h);
imagegif($mythumb,"./gz_img/thumb_$fn");
imagedestroy($motogazo);
imagedestroy($mythumb);
どうぞよろしくお願いいしたします。
No.1ベストアンサー
- 回答日時:
プログラムは思った通りに動かない。
書いた通りに動く。
という格言があります。
このプログラムがそのように動くのは、そのように動くように書かれているからです。
ということは、どうしたら「そのよう」に動くかを考えれば、逆に問題点をつきとめることができるのです。
そんな目線で見れば。
「画像サイズが変わらない」ということは、「画像サイズを変える部分が期待通りに動いていないのでは?」という仮説が立ちます。
ということで、現在の画像サイズから縮小したサイズを計算している箇所に注目します。
if($file['size'] > 100 * 100){
$new_h = 100;
$new_w = $w * 100 / $h;
} else{
$new_h = $h;
$new_w = $w;
}
$w,$hは現在の画像サイズ
$new_w,$new_hは新しい画像サイズ。
( $file['size'] > 100 * 100 ) ならば高さ100,幅は画像比を保持して。
そうでなければ、現在のサイズを使う
というプログラムになっています。
画像サイズが変わっていない、ということは ( $file['size'] > 100 * 100 ) ではない、と予想されます。
実際にどうなっているか確認しましょう。
$fileにどんなデータが入っているか知りませんけど、 $file['size'] って「ファイルサイズ」ではないでしょうか?
それと、 100*100 を「100x100の画素の画像サイズ 」のつもりで使っているのでは?
100*100はそのまま計算されて 10000 になります。
従って、ここは「 $file['size'] > 10000 」と解釈されます。 ファイルサイズという予想が正しければ 「ファイルサイズが10000超」という意味です。
「画像サイズが100x100超」のつもりでこう書いたとしても、そんな風に都合よく解釈してくれません。
「思った通りに動かない」とはこういうことです。
>kmeeさん
とても噛み砕いて教えてくださりどうもありがとうございます!
読ませていただいて最初は ??? て感じだったのですが、画像のプロパティ見てたらようやくわかりました!!
私はサイズを、横×縦の幅のことだと勘違いしてたんですね!!
なので、( $file['size'] > 100 * 100 ) を ($w > 100 || $h > 100) に書き換えたらうまく出来ました!!
本当にどうもありがとうございました!!とっても感謝です!!
また何かありましたらどうぞよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- PHP 画像が表示出来ません。 1 2023/02/02 16:30
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSの「MsgBox」について
-
phpで画像がどうしても文字化け...
-
【PHP】画像が表示されず「×」...
-
GD(php)での image関数 イメ...
-
拡張子php画像をjpg画像等に変...
-
PHP+PostgreSQLを使ってPDFファ...
-
画像アップロードのファイル名...
-
PHPで吐き出した画像にリンクを...
-
phpでheader関数を用いた画像表...
-
ビットマップ画像を読み込むプ...
-
アップロード画像数でCSSを分け...
-
PHP パスからファイル名を抽出...
-
ListViewコントロールでサムネ...
-
Pythonで画像の読み込みが上手...
-
ホープページの表示速度が遅い。。
-
imageフォルダに、画像をリサイ...
-
VBAでJPGサイズ変更
-
PHPでPDFを画像で表示したい
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Illustratorで文字と画像を流し...
-
透過PNGが透過されない!!
-
拡張子php画像をjpg画像等に変...
-
VBSの「MsgBox」について
-
C# Excelファイルへの画像挿入。
-
PythonのTkinter詳しい方へ。画...
-
アップロード画像数でCSSを分け...
-
VBAでJPGサイズ変更
-
GDI+を使ったビット数とDPIの扱い
-
imageフォルダに、画像をリサイ...
-
BLOBデーターの画像の表示方法...
-
PHP MySQLに画像を直接保存
-
SQLiteに画像を格納したい
-
PHPで吐き出した画像にリンクを...
-
「imagejpeg」(GD)で作成した...
-
phpで画像がどうしても文字化け...
-
PHPのGDライブラリについて
-
再投稿です。初MacでPythonの勉...
-
ListViewコントロールでサムネ...
-
WordPressで画像ファイルが壊れ...
おすすめ情報