• 締切済み

★PHP★画像アップロードの際に余白追加

PHPで画像アップロードフォームを作成しています。 その際に、全ての画像が 500*500の画像になるようにアップロードさせたいです。 (様々な画像登録をされるからです。) 登録まではできたので、あとはサイズ変更のみです。 質問が説明不足かもしれませんので、 何かヒントでもいただけると助かります。 よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数3

みんなの回答

回答No.3

PHPThumbというライブラリをインストールしてみたらどうでしょう 画像を500x500にリサイズして表示は require_once 'mylib/ThumbLib.inc.php'; $thumb = PhpThumbFactory::create('myimg/image.jpg'); $thumb->resize(500, 500); $thumb->show(); で出来ます。 使い方: https://github.com/masterexploder/PHPThumb/wiki/Basic-Usage

参考URL:
https://github.com/masterexploder/PHPThumb/wiki
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

一般的にはGDあたりと使うと思います。 http://www.php.net/manual/ja/ref.image.php 画像の縦横のサイズを取得して、長辺が500以上だったら長辺が500になるように縮小後の縦横サイズを計算して縮小します。 http://www.php.net/manual/ja/function.getimagesize.php そこまで出来てしまえば、500x500で作成した画像リソースに(位置を計算して)コピーすればいいと思います。伸縮(拡大もする)場合も同様に。 http://www.php.net/manual/ja/function.imagecopyresized.php

a-----n
質問者

お礼

ありがとうございます。 なんとかできそうな気がします。 やってみます。 また分からなかったら質問します。

  • ma-tsu
  • ベストアンサー率32% (190/593)
回答No.1

GDやImageMagickを使えば簡単です。 http://sandman.s6.xrea.com/nucleus/item-60.html サーバにGDやImageMagickがインストールされてている必要がありますが。

a-----n
質問者

お礼

迅速なご回答ありがとうございます。 しらべてみます。 GD使ってみます。

関連するQ&A

  • PHPでアップロードした画像が表示されません

    現在、Redhat9+Apache+PHP+PostgreSQLでサイトを構築しています。 PHPはRPMでインストールしました。 php-4.2.2-17.2.i386.rpm PHPでアップロードのフォームを作成し、jpegやgifなどの画像ファイルをアップロードし、表示するパスをDB(PostgreSQL)で管理しています。 画像は/tmp/ に一度アップされ、指定のパスに正常にコピーされているようなのですが、実際、ブラウザで見ると×印がでて表示されません。 アップロードされた画像をダウンロードして、画像処理ソフトなどで開いてみたのですが、表示されません。 アップロードの際に画像ファイルが壊れてしまったように思えます。 どなたか、解決方法等をご存知の方がいらっしゃいましたらご教授願えないでしょうか? よろしくお願いいたします。

    • 締切済み
    • PHP
  • 画像のアップロード

    現在画像のアップロードをし、同時に画像名と画像の説明文を登録するフォームを作っています。 ****************************************************** 画像名、説明文→AサーバーのDB(PHPファイルと同じサーバー) 画像ファイル→Bサーバーの画像格納フォルダ ****************************************************** 上記のように別々のサーバーに登録したいのですがどのように実現したらよいのでしょうか?

    • ベストアンサー
    • PHP
  • PHPで画像サイズの変更

    PHPで画像アップロード機能を作成しました。 アップロードされた画像をある一定の比率で縮小して統一しようと思うのですが、PHPでできるのでしょうか?このような機能を作成するときはアップロードされる画像のサイズを指定しておいたほうがいいのでしょうか? いろんな人がアップロードすることを想定しています。 教えて下さい。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 画像のアップロードについて

    こんばんは。現在mysqlとphpを使った掲示板を作っているのですが、画像のアップロードで困っています。 掲示板に投稿していただく際に5つほど画像を登録して頂いて、一覧表示する際に内一枚だけ表示するようにしています。 ここまではなんとかたどり着きました。ここから教えてください。 「一覧表示された画像をクリックすると別ウィンドウが開き、登録していただいた残りの画像も表示される。」 というスクリプトを書きたいのですが、どなたかアドバイスをいただけないでしょうか。お願いします。

    • ベストアンサー
    • PHP
  • PHPで画像アップロード時にサイズ変更できるのですか?

    いつも適切なご回答ありがとうございます。 PHPでPCサイトに画像アップロード機能というのは以前に作成したことがあります。 <input type="hidden" name="MAX_FILE_SIZE" value="30000"> <input type="file" name="upfile" size="35" class="smt">・・・・・ 今回やりたい事はPCで画像アップロードしたものを携帯サイト(サイズ制限ありますよね)で表示というものなのですが、画像処理ソフトなどを使用せず例えばデジカメで撮った画像をそのままアップロードしても表示するということは可能なのでしょうか?GDなどを使うのでしょうか?それとも最初から携帯などで撮った小さいサイズの画像をアップロードした方が良いのでしょうか?どなたかアドバイスお願いいたします。

    • 締切済み
    • PHP
  • PHPで画像データーのアップロードを行っています。

    PHPで画像データーのアップロードを行っています。 一つの画像を imagesファイルにアップロードするまでは出来たのですが一度に複数の画像をアップロードする方法が分りません。 本で読んだところ、fileを配列にすれば良いと書いてあったのですが単純にフォームを配列にしてもやはり一つの画像しかアップ出来ませんでした。 -- form.html -- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <form enctype="multipart/form-data" action='upload.php' method='post'> <input type="hidden" name="MAX_FILE_SIZE" value="102400" /> <input type="file" width=40 name="sendfile" /> <input type="submit" value="送信" /> </form> </body> </html> -- upload.php -- <?php if (!isset($_FILES['sendfile']['name'])){ echo 'ファイルが見つかりません。'; exit; } $fname = $_FILES['sendfile']['name']; $temp = $_FILES['sendfile']['tmp_name']; $target = './images/' . $fname; if (move_uploaded_file($temp,$target)){ echo $fname . "をアップロードしました。"; } else { echo "アップロードに失敗しました。"; } ?> 勉強中の私に分り易く教えていただける方、よろしくお願いいたします。 また、PHPでのメール自動送信は出来たのですが自動受信が分りません。 (お問い合わせメールの様な) これはかなり難しいのでしょうか? フォームからウィンドウズメール、アウトルック等で受信できるようにしたいのですが? PHP3.5+XAMPPでエクリプスを使い勉強しています。

    • ベストアンサー
    • PHP
  • 画像アップロードについて

    いつもお世話になっております。 画像アップロード機能を作成し、問題なくアップロードを行うことができたのですが、 ある一定サイズ(約2MB)を超えるとアップロードが行われない現象が発生しました。 アップロードした画像は既定のサイズにリサイズして保存する仕様となっているのですが アップロード自体が行われないため、困っています。 以下【該当処理抜粋】------------------------------------------------------------- // ファイル名を設定する $fname = "hoge.jpg"; // 画像の幅・高さを設定する【規定値】 $w_size = "150"; $h_size = "100"; $tmp_name = $_FILES[$fname]['tmp_name']; // 画像ファイル名 $filename = "./hoge/".$fname; if (is_uploaded_file($tmp_name)){ $type = $_FILES[$fname]['type']; if ($type == "image/jpeg" || $type == "image/pjpeg") { // 画像ファイル存在チェック if(file_exists($filename)){ // ファイルが存在する場合は削除する unlink($filename); } // 画像ファイル名でアップロードをおこなう move_uploaded_file($tmp_name, $filename); // 画像ファイルのサイズを取得する list($sw, $sh) = getimagesize($filename); $src = imagecreatefromjpeg($filename); $dst = imagecreatetruecolor($w_size, $h_size); // 画像ファイルを既定サイズにリサイズする imagecopyresized($dst, $src, 0, 0, 0, 0, $w_size, $h_size, $sw, $sh); imagejpeg($dst, $filename); echo $fname[1]."ファイルのアップロードが完了しました。<br>"; }else{ echo $fname ."ファイルの画像形式が正しくありません。<br>"; } }else{ echo $fname ."ファイルはアップロードされませんでした。<br>"; } ---------------------------------------------------------------------------------------------------- 現象について調べたところ、PHPにはアップロードサイズが設定されている(デフォルト2MB)ため サイズの大きいファイルはアップロードできないようです。 サーバーはロリポップでレンタルしているためphp.iniの設定を変更ができません。 画像自体を事前にリサイズしてアップロードを行えば問題ないのですが、 今後、一般の方にも公開を予定してまして、リサイズ方法が分からない人(そのようなソフトがない人)にも 操作できるようにデジカメで撮った写真をそのままアップロードできる形式にしたいと考えています。 何かいい方法があればご教授願います。 【環境】 PG:php4.3.11 WEB:Apache

    • 締切済み
    • PHP
  • PHP 画像アップロード 重複防止

    画像、ファイルをアップロードできるフォームを作成しています。 ---------------------- フォーム <FORM NAME="objform" action="yes.php" METHOD="POST" ENCTYPE="multipart/form-data"> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000"> <INPUT TYPE="file" NAME="img1" SIZE="40"><BR> <INPUT TYPE="submit" NAME="submit" VALUE="アップロードする!!"> </FORM> ーーーーーーーーーーーーーーーーーーーー yes.phpの中身 $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename); -------------------------- これでphoto のフォルダに格納されるようにしているのですが、 もし、同じファイル名でアップされた場合上書きされてしまいます。 IDをつけるか、もしくはその他の方法でファイル名が重複されないような設定にするにはどうすればよいでしょうか。 現在PHP勉強中です。 初歩的なことかもしれませんが、 よくわからないのでアドバイスを頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • 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
  • 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

専門家に質問してみよう