dポイントプレゼントキャンペーン実施中!

PHP+MYSQLをつかって画像UP掲示板をつくっています。一覧ページにて投稿された画像をIMGタグで縮小しているのですが、転送量を減らす為もう一つ小さいサムネイルを作りたいと思っております。色々試してみたのですが初心者の為うまくいきません。

もしご存知の方がいらしゃいましたらヒントだけでも教えていただけないでしょうか。よろしくお願いいたします。


// 新規投稿された時の処理
if($_POST["q"] == '新規追加')
{
省略

// エラーチェック
switch ($_FILES["画像"]["error"])
{
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
error("サイズ制限を超えています。");
case UPLOAD_ERR_PARTIAL:
case UPLOAD_ERR_NO_FILE:
error("エラー");
}

// ファイルサイズを再チェック
if($_FILES["画像"]["size"] > 1024 * 100)
{
error("エラー");
}

// gifとjpeg以外のファイルを拒否
if(!preg_match("/^image\/.*(gif|jpeg)$/i", $_FILES["画像"]["type"]))
{
error("エラー");
}

// 特定の文字以外の文字を使用したファイル名を拒否
if(preg_match("/[^\w\d\-\.]/", $_FILES["画像"]["name"]))
{
error("エラー");
}

// ファイルを移動
$ext = substr($_FILES["画像"]["name"],-4);
$mictime = microtime();
$imagefile = substr($mictime, 11) . substr($mictime, 2, 6) . "$ext";
$upload_file = UPLOAD_DIR . $imagefile;

if(move_uploaded_file($_FILES["画像"]["tmp_name"], $upload_file))
{
chmod($upload_file, 0644);
}
省略

A 回答 (3件)

ご質問でおっしゃられている掲示板、もしかしてどこかから拾ってきたPHPプログラムでやっていませんか?


MYSQLとPHPでやりとりできるプログラミングをご自分で書ける程度の知識があれば、全然簡単なはずですが・・・。

マニュアルに色々載っていますがご覧になられているでしょうか。

http://www.php.net/manual/ja/function.copy.php

http://www.php.net/manual/ja/features.file-uploa …

をまずご覧ください。
で、画像の加工に関しては、

http://www.php.net/manual/ja/ref.image.php

こちらをご覧ください。

注意すべき事は、画像を加工する場合その画像がBMPなのかJPEGなのかGIFなのかPNGなのかうまく判断しないと思った通りの結果は得にくいでしょう。
この辺は、覚えていくに従ってわかると思うのでがんばってください。そんな難しくないです。

あとは、前回紹介した

http://tsuttayo.sytes.net/php/gd/

こちらにほぼ御希望の処理が書かれていますので。
    • good
    • 0
この回答へのお礼

campanella_77さん
最後返信ありがとうございます。
教えていただいた順番に勉強していきたいと思います。
スクリプトは拾ってきたと言うより参考書を買ってサンプルをコピペ&コピペで合体させました。

ご親切にありがとうございました。

お礼日時:2005/04/01 14:19

こんちは。


レンタルサーバなんかを使ってたりすると、GDライブラリが使えなかったりしますんであくまで参考に。

こちらに御希望に添った説明・処理が載っているかと。
http://tsuttayo.sytes.net/php/gd/

GDライブラリが使えない場合は・・・。

ま、使えなくてもPHPで加工できます。ただし、GIFやJPEGのフォーマットや、PHPのビット演算子等の使い方がわからないとにっちもさっちもいかないでしょう。
一応、GIFのフォーマットを。
http://www.tohoho-web.com/wwwgif.htm

PHPのGDライブラリは使ってみるとわかるのですが、ひじょ~に遅いのでどこかでCなどで書かれたプログラムを拾ってきて、そちらに処理させる。っていう方法もあります。


※ブロードバンドが普及した今となっては、あんまり転送量は気にしなくていいでしょう。
それよりは処理能力を気にした方がよいと思います。

投稿数がめちゃめちゃ多いなら、そのまま。投稿数が少なければ、GDライブラリを使って。
という感じでよいと思いますよ。
    • good
    • 0
この回答へのお礼

campanella_77さん ご返信ありがとうございます。
私の説明不足の為、ご迷惑をお掛けいたします。
恥ずかしながらGDの処理をする前に一つの投稿から画像を2つ作る事ができません。ひょっとして画像を2つも作る事は無理なんでしょうか?

お礼日時:2005/03/31 11:27

画像そのものをリサイズしたいなら、イメージ関数を使う他ありません。


ただ、PHPがGDライブラリに対応していないと使えません。使えたら、↓みたいに使う。

$bitmap=imagecreatefromjpeg($imagefile);
$thumbnail=imagecreatetruecolor(64,64);
imagecopyresampled($thumbnail,$bitmap,0,0,0,0,64,64,256,256);
imagepng($thumbnail,"thumbnail.png");
imagedestroy($thumbnail);

うーん。どんなもんでしょう。
ちなみにJPEGの拡張子は、普通「.jpg」ですよ。「gif|jpg|jpeg」ってした方がいいんじゃない?

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=985978
    • good
    • 0
この回答へのお礼

randmanさん ご返信ありがとうございます。
すこし説明不足でしたが、2つ画像を作る処理で悩んでいます。教えて頂いたサムネイルの処理を使う前に
もう一つの画像をSQLにいれる事ができません。
このヒントを・・・と思ったのですが、本当に申し訳ございません。

「gif|jpg|jpeg」に変更します。ご丁寧にありがとうございます。

お礼日時:2005/03/31 11:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!