Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

PHP GDで画像を自動で縮小してアップする

More than 5 years have passed since last update.

PHP で画像を自動で縮小してアップする方法をメモします。

やりたいこと

  • 画像を1枚アップする
  • JPG画像のみアップできる
  • 指定サイズ以上の画像のみアップできる
  • 指定サイズより大きい場合は指定サイズに自動で縮小
  • 縮小する際は幅・高さの長いほうを指定サイズに合わせる

ソース

example.tml
<form action="example.php" method="post" name="FormName" enctype="multipart/form-data">
<input type="file" name="up_img" value="参照" class="example">
<input type="submit" name="submit" value="送信">
</form>
example.php
if ($_POST['submit']) {
    if (is_uploaded_file($_FILES["up_img"]["tmp_name"])) {
        $file1 = $_FILES["up_img"]["tmp_name"]; // 元画像ファイル
        $file2 = "../img/example.jpg"; // 画像保存先のパス
        $in = ImageCreateFromJPEG($file1); // 元画像ファイル読み込み
        $width = ImageSx($in); // 画像の幅を取得
        $height = ImageSy($in); // 画像の高さを取得
        $min_width = 500; // 幅の最低サイズ
        $min_height = 500; // 高さの最低サイズ
        $image_type = exif_imagetype($file1); // 画像タイプ判定用

        if ($image_type == IMAGETYPE_JPEG){ // JPGかどうか判定
            if($width >= $min_width|$height >= $min_height){
                if($width == $height) {
                    $new_width = $min_width;
                    $new_height = $min_height;
                } else if($width > $height) {//横長の場合
                    $new_width = $min_width;
                    $new_height = $height*($min_width/$width);
                } else if($width < $height) {//縦長の場合
                    $new_width = $width*($min_height/$height);
                    $new_height = $min_height;
                }
                // 画像生成
                $out = ImageCreateTrueColor($new_width , $new_height);
                ImageCopyResampled($out, $in,0,0,0,0, $new_width, $new_height, $width, $height);
                ImageJPEG($out, $file2);
            } else {
                echo "サイズが幅".$min_width."×高さ".$min_height."以上の画像をご用意ください";
            }
        } else {
            echo "JPG画像をご用意ください";
        }
}
yuwaita
Design : Excel : HTML/CSS : JavaScript : PHP = 3 : 3 : 2 : 1 : 1 くらいで毎日楽しく生活しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away