画像アップロードするプログラムを作成したのですが、元画像を指定したサイズ(アスペクト比を維持)させて画像をアップロードする方法を何度かトライしたのですが、経験浅く断念しています。GDで処理させる方法がベストと思っていますが、下記のサンプルコードを手直しお願いしていただけるか、下記と同様な手順での処理方法に類似したサイトがあれば教えてください。
処理の条件
・元画像を指定サイズでアスペクト比を維持した状態でリサイズ
・元画像は削除?
・透過Gifも使えるといいです。
・その他アドバイス
if(is_uploaded_file($img)){
$imagesize = getimagesize($img);
switch($imagesize[2]){
case 1:
$img_name = $code . ".gif";
break;
case 2:
$img_name = $code . ".jpg";
break;
case 3:
$img_name = $code . ".png";
break;
default:
unlink($img);
}
if($img_name){
$sendpath = $path.$img_name;
if(move_uploaded_file($img, $sendpath)){
$img_name = $img_name;
}
}
}
No.1ベストアンサー
- 回答日時:
No.2
- 回答日時:
私が以前作ったものを披露。
組み合わせるとこんな感じに。
...
if(move_uploaded_file($img, $sendpath)){
$img_name = $img_name;
resize_image($sendpath);
}
}
}
...
function resize_image($image_file){
list($src_width,$src_height)=getimagesize($image_file);
if ($src_width>280){
$resize_width = 280;
$resize_height = $src_height * ( $resize_width / $src_width );
$image_src = imagecreatefromjpeg($image_file);
$image_resize = imagecreatetruecolor($resize_width,$resize_height);
imagecopyresized($image_resize,$image_src,0,0,0,0,$resize_width,$resize_height,$src_width,$src_height);
imagejpeg($image_resize,$image_file);
}
}
私のはホームページ上に、横幅280ピクセルに統一したかったのでこうですが、
縦横率を維持するために、固定化される縦幅あるいは横幅を決める必要があります。
重要な処理はここ。
横幅を固定
$resize_width = 280;
高さ調節=元の高さ×(固定横幅÷元の横幅)
$resize_height = $src_height * ( $resize_width / $src_width );
「固定横幅÷元の横幅」
これが比率を保持する役目をはたします。
jpeg用なので、
imagejpeg($image_resize,$image_file);
ここのところは分岐処理が必要かも。
アップロードされた画像ファイルが上書きされますので、
そこらへんはコピーするなどしてうまくしてください。
これでヒントになるかな。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP 画像が表示出来ません。 1 2023/02/02 16:30
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- PHP 記述のおかしいところを教えて下さい。 1 2023/02/03 11:25
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- PHP PHP・Wordpress preg_replaceを条件分岐で処理させる方法が知りたい 1 2023/05/01 14:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
拡張子php画像をjpg画像等に変...
-
どの画像がクリックされたかフ...
-
実行ファイル(exe)に画像ファ...
-
VBSの「MsgBox」について
-
GDI+を使ったビット数とDPIの扱い
-
C# Excelファイルへの画像挿入。
-
VBAでJPGサイズ変更
-
携帯電話から画像ファイルをア...
-
pythonのファイル内に 手書き数...
-
ウィンドウサイズを取得して、p...
-
画像が存在しない時の 「×」 表...
-
10進BASICでの画像回転
-
MYSQLから、画像表示するには
-
アップロード画像数でCSSを分け...
-
ビットマップ画像を読み込むプ...
-
pictureboxに表示した画像のフ...
-
onedrive にexcelファイルをア...
-
こちらはただの直列処理ですか?
-
ワードプレス、Contact Form 7...
-
PHPとCSVで簡易データベースな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
アップロード画像数でCSSを分け...
-
imageフォルダに、画像をリサイ...
-
VBAでJPGサイズ変更
-
Illustratorで文字と画像を流し...
-
VBAのコードを教えてください
-
C# Excelファイルへの画像挿入。
-
php,mysqlにて画像パス保存/表...
-
GDI+を使ったビット数とDPIの扱い
-
SQLiteに画像を格納したい
-
ListViewコントロールでサムネ...
-
★PHP?★画像を縦横比を変えずに...
-
ビットマップ画像を読み込むプ...
-
phpで画像がどうしても文字化け...
-
PHPで吐き出した画像にリンクを...
-
phpMyAdminに画像を保存できない
-
OpenGLで描いて画像ファイル出力
-
手作業で埋め込んだ、UserForm1...
おすすめ情報