• ベストアンサー

サムネイルを2つ生成する方法

campanella_77の回答

回答No.2

こんちは。 レンタルサーバなんかを使ってたりすると、GDライブラリが使えなかったりしますんであくまで参考に。 こちらに御希望に添った説明・処理が載っているかと。 http://tsuttayo.sytes.net/php/gd/ GDライブラリが使えない場合は・・・。 ま、使えなくてもPHPで加工できます。ただし、GIFやJPEGのフォーマットや、PHPのビット演算子等の使い方がわからないとにっちもさっちもいかないでしょう。 一応、GIFのフォーマットを。 http://www.tohoho-web.com/wwwgif.htm PHPのGDライブラリは使ってみるとわかるのですが、ひじょ~に遅いのでどこかでCなどで書かれたプログラムを拾ってきて、そちらに処理させる。っていう方法もあります。 ※ブロードバンドが普及した今となっては、あんまり転送量は気にしなくていいでしょう。 それよりは処理能力を気にした方がよいと思います。 投稿数がめちゃめちゃ多いなら、そのまま。投稿数が少なければ、GDライブラリを使って。 という感じでよいと思いますよ。

melchanchan
質問者

お礼

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

関連するQ&A

  • ファイルのアップロードについて

    画像ファイルをフォームからアップロードしているのですが どうやっていものかわからないことがあります。 まずは、アップするファイルを選択してもらいファイルサイズや 拡張子チェックに問題がなければ他の項目にエラーがあっても move_uploaded_file関数で一時保存フォルダに画像を保存しています。 一時保存フォルダにアップされた画像は後々タイプスタンプで経過 時間を取得し1日以上経過しているものについては削除するので タイムスタンプの値をファイル名にしています。 全ての項目にエラーもなく確定となった場合にはrename関数で 一時保存フォルダから正式な保存フォルダへファイルを移動しています。 ソースをまとめると // 一時ファイル保存フォルダ $tempdir = '../../upload/temp/'; // 一時保存のファイル名 $mktime = mktime(); $tempname = $mktime . '.jpg'; // ファイル正式保存フォルダ $filedir = '../../upload/image/'; // 正式保存のファイル名 $mictime = microtime(); $filename = substr($mictime, 11) . substr($mictime, 2, 6) . '.jpg'; if (isset($_POST['submit'])) { if ($_FILES['file']['size'] == 0) { // サイズが0なのでエラー } if ($_FILES['file']['error'] == UPLOAD_ERR_OK) { // サイズチェック2 if ($_FILES['file']['size'] > 1024*1024) { // 規定サイズ以上なのでエラー } if (画像に関するエラーがなければ) { // move_uploaded_fileで一時保存フォルダへアップロード } } if (全ての項目にエラーがない場合) { // rename関数で一時保存フォルダから正式な保存フォルダへ移動 } というようにしています。 $_FILEは保持できないので一度でもファイルをアップロードしても 他の項目にエラーがある限りリセットされてしまいサイズが0バイトと なるのでエラーチェックに引っかかり何度も選択しなくてはなりません。 一時保存フォルダに保存されたら再度ファイルを選択しアップロード しない限り他の項目にエラーがあってもファイルのエラーチェックを 通し一時保存フォルダの画像をサムネイル画像としてページ上に表示 させたいのですがどうすればいいのでしょうか? 自分なりに調べてみたのですが参考情報や解決策がみつかりませんでした。 詳しい方がおりましたら宜しくお願い致します!

    • 締切済み
    • PHP
  • ファイルのアップロード mysql

    現在PHPを使いファイルのアップロードをしようとしているのですが 途中でいきずまってしまいました。自分がしたいことですが フォームからファイル(画像:jpgのみ)をMYSQLにアップロードし、必要に応じてその画像を出力するということです。また画像のサイズも決めてそれ以上ならエラーを出すということです。こちらが今あるスクリプトになります。 途中まではなんとなく分かったのですがどうしても続きが分かりません。 ちなみにphp.iniの設定は色々調べたのであっていると思います。 またMYSQLのカラムはBLOBになっており、下記にinsert into~の文もあります。 form.php <form name="order" action="form.php" method="post" enctype="multipart/form-data"> <input name="MAX_FILE_SIZE" type="hidden" value="1000000" /> <input name="uploadfile" type="file" size="60" /> </form> <?php $uploadfile_name = $_FILES["uploadfile"]["name"]; $uploadfile_tmp_name = $_FILES["uploadfile"]["tmp_name"]; $uploadfile_size = $_FILES["uploadfile"]["size"]; if (strlen($uploadfile_name) > 0 ) { $fileinfo = pathinfo($uploadfile_name); $fileext = strtoupper($fileinfo["extension"]); $err_msg = ""; //ファイルのサイズチェック if ($uploadfile_size > 1000000 ) { $err_msg .= "テキストファイルが大きすぎます。1MB以下にして下さい。<br />"; } //ファイルの拡張子チェック elseif ($fileext != "jpg") { $err_msg .= ".jpg形式以外のファイルは登録できません。<br />"; } if( //どのようにしれMYSQLに保存するのかここら辺から分からなくなっています。 } } } $sql = "insert into ccc values('$upload_file')"; どなたかご存知の方おりましたらお伺い出来ませんでしょうか。 宜しくお願い致します。

    • 締切済み
    • PHP
  • 同じファイル内で、アップロードとアップロードされたファイルの処理をすることについて

    OS:Window XP Pro 開発環境:Xampp(Apache + PHP + Mysql) 現在ファイルをアップロードする処理を書いているのですが、 この処理を 1)a.phpでファイルをアップロードする処理 2)b.phpでアップロードされたファイルの処理 と分けて、コーディングするのではなく 1)a.php内にファイルをアップロードする処理とアップロードされたファイルの処理を一緒に記述する という風にできないかと思いましたので、 以下のようなコードを書いたのですが $_FILES['upload_file']['tmp_name']) の値を調べてみたところ、なんの値も 入っていなかったことから このコードでは、二つの処理を一つのファイル内に書くことが でいないようでした。 どうにかしてひとつのファイル内に この二つの処理を同居させることはできないのでしょうか? a.php --------------------------------------- switch($action) { case "update": if(is_uploaded_file($_FILES['upload_file']['tmp_name'])) { $upload_file = $_FILES['upload_file']['tmp_name']); if(file_exists(dirname(__FILE__)."/profile_phote/") == TRUE) { $phote_name = dirname(__FILE__)."/profile_phote/".$upload_file; } else { mkdir(dirname(__FILE__)."/profile_phote/"); $phote_name = dirname(__FILE__)."/profile_phote/".$upload_file; } move_uploaded_file($_FILES['upload_file']['tmp_name'],$phote_name); "リダイレクト処理・・・" case ... case ... default: <form name="profile" action="" method="post"> <input type="file" name="upfile"> <input type="hidden" name="action" value="update"> </form> }

    • ベストアンサー
    • PHP
  • preg_matchの使い方

    選択した画像ファイルをgifフォルダにアップロード保存して 同入力画面にも出力するサンプルの勉強をしています。 「preg_match」を使ってアップロードできるファイルを gif,jpg,pngに限定するというようにしたいのですが 使い方が間違っているようで上手く行きません。 どこが間違っているのでしょうか? よろしくお願いいたします。 ---------------------------------------------------------- <html> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="data"> <input type="submit" value="表示"> </form> <?php $updir = "./gif/"; $filename = $_FILES["data"]["name"]; if(file_exists($_FILES["data"]["tmp_name"])){ $filesize = filesize($_FILES["data"]["tmp_name"]); if($filesize <= 100000){ if(preg_match("/\.gif$ | \.jpg$ | \.png$/", $filename)){ ←←※※※ move_uploaded_file($_FILES["data"]["tmp_name"], $updir.$filename); echo "ファイル名".$filename."アップロード成功!"; echo "<br><br>"; echo "<img src='./gif/$filename'>"; }else{ echo "jpg,pngもしくはgifのファイルしかアップできません。"; } }else{ echo "$filesize バイト。ファイルサイズが大きすぎます。"; } } ?> </body> </html> ----------------------------------------------------------

    • ベストアンサー
    • PHP
  • 画像をアップロードする度に古い画像を削除

    お世話になっております。 とあるサイトのソースを参考に画像のリアルタイムプレビューを作成しました。 画像を上げプレビューを表示することはできたのですが画像を上げる度に次々と表示される画像が増えてしまいます。 画像を新しく上げる場合は以前に入っていた画像を削除する、 もしくは最後に上げた画像のみをプレビュー表示する方法はありますでしょうか? unlinkを使用して削除を考えたのですが、 削除とアップロードの両立ができませんでした。 以下が使用しているソースになります。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>jQuery.uploadのサンプル</title> <script type="text/javascript" src="./js/jquery-1.7.1.min.js"></script> <script type="text/javascript" src="./js/jquery.upload-1.0.2.min.js"></script> <script type="text/javascript"> $(function() { $('#file_id').change(function() { $(this).upload('upload.php', function(res) { $(res).insertAfter(this); }, 'html'); }); }); </script> </head> <body> <style> .thumb { height: 200px; border: 1px solid #000; margin: 10px 5px 0 0; } </style> <input type="file" name="upload_file" id="file_id"> </body> </html> <?php #アップロードされたファイルが存在するか if ( !is_uploaded_file( $_FILES['upload_file']['tmp_name'] ) ) { echo '<div>ファイルが選択されていません。</div>'; exit(); } #$_FILES["upload_file"]["tmp_name"]がテンポラリにあるファイル名 #$_FILES["upload_file"]["name"]がアップロード元のファイル名 #tmpからファイルをコピー move_uploaded_file($_FILES["upload_file"]["tmp_name"], "files/" . $_FILES["upload_file"]["name"]); echo '<div>'.$_FILES["upload_file"]["name"].'をアップロードしました</div>'; echo '<img class="thumb" src="files/' . $_FILES["upload_file"]["name"] . '">' ?> どなたかご回答いただけましたら幸いでございます。 どうぞ宜しくお願いします。

    • ベストアンサー
    • PHP
  • 3日で作るPHPの本で画像アップロードするには?

    3日で作るPHPの本で画像アップロードするには? フォーム内 画像 <input type="file" name="image" size="40"><br> 下記内容でファイル内に保存する $upload_file = date("ymdHis")."_".basename($_FILES["image"]["name"]); $upload_path = "<保存先のディレクトリ名>".$upload_file; $upload_url = "./images/".$upload_file; move_uploaded_file($_FILES["image"]["tmp_name"],$upload_path); 以上のように表記してありましたが、 表示の仕方が書いていなくどのように表記したよいのかサンプルなどで教えていただきたいです。 さらに上記のように保存先のディレクトリ名書を絶対相対パスで書いてみたのですが保存されませんでした。 どこを変更するとよいでしょうか

    • 締切済み
    • PHP
  • ファイルのアップロードについて

    phpのmove_uploaded_fileを使用してアップロードをしようと思うのですがアップロードが出来ません。 状況は ローカル環境のwindowsでのアップロードは行えるがlinuxでは失敗してしまいます。 move_uploaded_fileからはエラーは出力されていません そもそもmove_uploaded_fileが成功しているのになんでアップロードされていないのか分かりません。 //■HTML <form name="form1" method="post" action="upload.php" ENCTYPE="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="10485760" /> <table class="frm" id="tbl"> <tr><th>ファイル1<div id="image"></div></th> <td> 画像<input id="img_1" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br /> </td></tr> <tr> <th>ファイル2<div id="image"></div></th> <td> 画像<input id="img_2" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br /> </td> </tr> </table> </form> //■phpで以下のコードを実行すると oreach ($_FILES["image"]["error"] as $key => $error) { //複数のファイルをアプロード if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["image"]["tmp_name"][$key]; //テンポラリファイルパス $name = $_FILES["image"]["name"][$key]; //アップロードファイル名 $size = $_FILES["image"]["size"][$key]; //アップロードファイルサイズ $ermsg = $_FILES['image']['error'][$key]; //エラーメッセージ echo "アップロードファイル名".$name."\n" ; echo "アップロードファイルsize" .$size ."\n" ; echo "errmsg= .$ermsg."\n" ; // ファイルアップロード $cnt++; if ( move_uploaded_file($tmp_name, "../1/33/.$cnt."2upload.jpg ")){ //ファイルアップロード echo "アップロード成功 .$ermsg."\n" ; echo "  テンポラリファイル="$tmp_name."\n"; echo "  アップロードファイル="$dir_img."/".$cnt.UPLOAD_FILE_NAME."\n"; } else { echo 1; error_log("upload error! \n", 3, MATCHING_ERROR_LOG); exit; } } } exit; ■結果 アップロードファイル名thum6.jpg アップロードファイルsize=10104 errmsg= 0 アップロード成功   テンポラリファイル=/tmp/phpMvCzgo   アップロードファイル=../1/33/1upload.jpg アップロードファイル名 thum3.jpg アップロードファイルsize=11528 errmsg= 0 アップロード成功   テンポラリファイル=/tmp/php5Q4kIL   アップロードファイル=../1/33/2upload.jpg テンポラリの/tmpは777のため権限に問題ないです php.iniの設定 upload_max_filesize=2m post_max_size=8m memory_limit=128m 今回のアップロードファイルのサイズから問題なし file_uploads=onなので問題ありませんでした これでなにかわかる方いらっしゃいましたら教えてください。

    • ベストアンサー
    • PHP
  • php アップロードファイルが*.csv指定の問題

    <form name="csvupload" id="csvupload" action="csvread.php" method="post" enctype="multipart/form-data" > <input type="hidden" name="MAX_FILE_SIZE" value="30000" /><br /> csvfile:<input type="file" name="uploadfile" size="50" accept="text/comma-separated-values" /> <input type="submit" name="hyosi" value="ファイル表示" /><br /> </form> htmlからファイルが選択して、php言語でそのファイルが*.csv拡張子で指定して、アップロードする。以下わたし作ったのサンプルで*.exeだとうまくいかなかった。初心者です。急ぎです。誰か助けてください。 if(isset($_POST['hyosi'])){ $file_dir = 'C:\apaches\Apache2\htdocs\practice\csvupload\csvfile\\'; $file_path = $file_dir.$_FILES['uploadfile']['name']; if(!is_uploaded_file($_FILES['uploadfile']['tmp_name'])){ print'*.csvhh拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-4))!=".CSV"){ print'*.csv拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-3))=="EXE"){ print'*.csvrrr拡張子のファイルを参照してください。'; exit; /* elseif(preg_match("/^.*\.(?!csv)$/",$_FILES['uploadfile']['name'])){ print'*.csv拡張子のファイルを参照してください。'; exit; */ } elseif($_FILES['uploadfile']['name'] == '' && $_FILES['uploadfile']['size'] == 0){ print'ngngng'; exit; } else{ if(move_uploaded_file($_FILES['uploadfile']['tmp_name'],$file_path)){ $csv_dir = "./csvfile/"; $csv_path = $csv_dir.$_FILES['uploadfile']['name']; $sfile = addslashes($csv_path); $_SESSION['file'] =$sfile; $file=fopen($sfile ,'r'); }else{ print '正常にアップロード処理されませんでした。'; exit; } } }

    • 締切済み
    • PHP
  • PHPでimageファイルをアップロードする際、

    PHPでimageファイルをアップロードする際に、デジカメのサイズでは大きすぎるので小さなサイズでアップロードしたいと思っています。 <?php $error = ""; if (isset($_POST["submit"])) { $fileName = $_FILES['image']['name']; if (!empty($fileName)) { $ext = substr($fileName, -3); if ($ext != 'jpg' && $ext != 'gif' && $ext != 'png') { $error['image'] = 'type'; } } if (empty($error)) { // 画像をアップロードする $image = date('His') . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], 'image/' . $image); $_POST['image'] = $image; $error = "アップロード成功!"; } else { $error = "アップロード失敗!"; } } ?> 上記のコードだとそのままのファイルサイズでアップされるのですが、サイズを(400px、300px)の様に小さくしてアップする方法はないでしょうか? 現状ではフォトショップなどで一度画像を小さくしてアップしています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 画像のupができません。

    お世話になっております。 PHPでCMSを組んでいるのですが、画像のUPロードがうまくいきません。 DBにはファイル名が登録されるのですが、画像ファイルが指定フォルダに入りません。 詳しい方、ご教授願います。 抜粋部分です。 Functionファイル内 function image($image, $folder, $options=array()){ if($image){ $option=getOptions($options); $img='<img src="'.$folder.$image.'"'.$option.'/>'; return $img; }else{ return "&nbsp;"; } } function uploadFile($data, $confirm=false, $options=array()){ if($confirm){ $file=hidden($data["name"],$data["value"]); }else{ $option=getOptions($options); $file='<input type="file" name="'.$data["name"].'"'.$option.'/>'; } return $file; } ソースコード部分 foreach ($imageList as $key => $title) { if(!empty($_FILES[$key]["tmp_name"])){ if($err == UPLOAD_ERR_OK){ if(isAllowedExtension($_FILES[$key]["name"],$allowedExtensions)) { if(isset($id)){ if($oldData[$key]!=$_FILES[$key]["name"] && file_exists(DIR_IMAGES.$_FILES[$key]["name"])){ $error=$_FILES[$key]["name"]."ファイルが存在します"; }else{ $new_img[$key]=$_FILES[$key]["name"]; move_uploaded_file($_FILES[$key]["tmp_name"],DIR_IMAGES."tmp.".$_FILES[$key]["name"]); } }else{ if(file_exists(DIR_IMAGES.$_FILES[$key]["name"])){ $error=$_FILES[$key]["name"]."ファイルが存在します"; }else{ $new_img[$key]=$_FILES[$key]["name"]; move_uploaded_file($_FILES[$key]["tmp_name"],DIR_IMAGES."tmp.".$_FILES[$key]["name"]); } } }else{ $error=$title.":画像ファイルを選択して下さい"; } }else{ $error=$title.":アップロードエラー。<br />"; } } } 登録部分 <td>&nbsp;<?php if(!$mode){?> <?php $file_data=array('name'=>"image_search", 'value'=>$new_img["image_search"]); echo uploadFile($file_data,$mode,array("size"=>'37'));?> <?php } //確認画面で新しい画像かどうか判断 if($new_img["image_search"]){ $image_search=$new_img["image_search"]; $rest = substr($image_search, 0, 4); if($rest=="tmp."){ $image_search=substr($image_search, 4, strlen($image_search)); } $image_file="tmp.".$image_search; echo hidden("new_img[image_search]", $image_search); }elseif($data['image_search']){ $image_search=$data["image_search"]; $image_file=$data["image_search"]; } echo hidden("data[image_search]", $image_search); if($image_search){ if(!$mode){?> <div class='clear'></div> <div class='title1 left'></div><?php }?> <?php } if($image_search){ if(!$mode){?> <div class='clear'></div> <div class='title1 left'></div><?php }?> <div class='img_name left'><?php echo $image_search;?></div> <div class='clear'></div> <div class='title1 left'></div> <div class='left'><?php echo image($image_file,DIR_IMAGES, array('border'=>"0",'style'=>"width: 100px"))?></div> <?php }?> </td> よろしくお願い致します。

    • 締切済み
    • PHP