.htaccessでPHPのファイルアップロードサイズの上限値を変更
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…
レスポンシブ対応での作成がメインとなり、大きな画像を使う機会が増えてきています。本来であれば機種に合わせて画像を用意するのが良いのですが、数が多いと対応が難しい場合もあるので、PHPでリサイズする方法をメモ。
//値を取得
$img_tmp = htmlspecialchars($_GET['img'], ENT_QUOTES, 'UTF-8');
//画像サイズを取得
$imgary = getimagesize($img_tmp);
$srcwidth = $imgary[0];
$srcheight = $imgary[1];
$srctype = $imgary[2];
//リサイズサイズの設定
$newwidth = 200;
$newheight = $srcheight * $newwidth / $srcwidth;
// 加工前のファイルをフォーマット別に読み出す(今回はjpg、gif、pngのみ対応)
switch ($srctype) {
case 1:
$original_image = imagecreatefromgif($img_tmp);
break;
case 2:
$original_image = imagecreatefromjpeg($img_tmp);
break;
case 3:
$original_image = imagecreatefrompng($img_tmp);
break;
default:
echo('対応していないファイル形式です。: '.$srctype);
exit();
}
//元画像を縮小してコピー
$newimage = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($newimage, $original_image, 0, 0, 0, 0, $newwidth, $newheight, $srcwidth, $srcheight);
// コピーした画像を出力する
switch ($srctype) {
case 1:
header('Content-type: image/gif');
imagegif($newimage);
break;
case 2:
header('Content-type: image/jpeg');
imagejpeg($newimage);
break;
case 3:
header('Content-type: image/png');
imagepng($newimage);
break;
default:
exit();
}
//リソースを解放
imagedestroy($original_image);
imagedestroy($newimage);
まずは「getimagesize」関数を使ってリサイズしたい画像の情報を取得。
取得情報をもとにリサイズの設定を行ったら、次に「imagecopyresampled」関数で元画像を縮小コピー。
最後は「imagejpeg」関数(jpegの場合)で出力。
実際にHTMLタグの中に組み込む場合は、下記のような使用方法になります。
<figure><img src="resize.php?img=対象画像のURL"></figure>
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…
2020.10.3
テキストエリア等で入力した文字の中にURLを含んでいた場合に、自動で認識してリンクタグを…
2020.12.5
メールフォームからメールを送信する際に、画像(ファイル)を添付できるようにしてほしいとの…
2024.03.30
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが…
2023.12.2
ワードプレスの投稿のカテゴリー機能を、目的ごとに使い分けたいというご要望があった際に、カ…