0

ユーザーが自分のプロフィール画像をアップロードできるプロフィール ページを作成する必要があります。ご存じのように、ユーザーがアップロードした画像は、サイズの関係で実際の処理には使用できません。それが画像のサイズ変更の出番です。それを行うコードがあります。しかし、それには何か問題があります。

元のファイルを mysql データベースのディレクトリ/列にアップロードするだけです。代わりに「thumb_」画像をアップロードすべきではありませんか? それとは別に、元の画像とthumb_画像の両方がフォルダーに作成されます。

これがコードです。何が問題なのか教えていただければ幸いです。また、フォルダにアップロードする画像の量を制限する方法を教えてください。プロファイルには、2 つの画像 (オリジナルとthumb_) のみが必要です。

Profile.php

<?php
include "core/init.php";
include "includes/overall/header.php";


if (isset($_GET['username']) === true && empty($_GET['username']) === false) {
    $username = $_GET['username'];

    if (user_exists($username) === true) {
        $user_id = user_id_from_username($username);
        $profile_data = user_data($user_id, 'Username', 'Name', 'Email');


        ?>
        <div id="body_content_sub">
            <div class="title_line">
                <div id="title">
                    <h5><?php echo $profile_data['Name']; ?></h5>
                </div>
            </div>

            <?php
            if (isset($_FILES['image']) === true) {
                if (empty($_FILES['image']['name']) === true) {
                    echo "Please choose a file!";
                } else {
                    //Preparing the variables
                    $name = $_FILES['image']['name'];
                    $temp = $_FILES['image']['tmp_name'];
                    $type = $_FILES['image']['type'];
                    $size = $_FILES['image']['size'];
                    $ext = strtolower(end(explode('.', $name)));
                    $size2 = getimagesize($temp);
                    $width = $size2[0];
                    $height = $size2[1];
                    $upload = md5(rand(0, 1000) . rand(0, 1000) . rand(0, 1000) . rand(0, 1000));

                    // Requirements
                    $maxwidth = 1920;
                    $maxheight = 1080;
                    $allowed = array('image/jpeg', 'image/png', 'image/gif');

                    // Recognizing the extension
                    switch ($type) {

                        // Image/Jpeg
                        case 'image/jpeg':
                            $ext = '.jpg';
                            break;

                        // Image/png
                        case 'image/png':
                            $ext = '.png';
                            break;

                        // Image/gif
                        case 'image/gif':
                            $ext = '.gif';
                            break;
                    }

                    // upload variables
                    $path = 'images/avatars/' . $upload . $ext;
                    $thumb_path = 'images/avatars/thumb_' . $upload . $ext;

                    if (in_array($type, $allowed) === true) {
                        if ($width < $maxwidth && $height < $maxheight) {
                            if ($size < 5242880) {
                                // check the shape of the image
                                if ($width == $height) {
                                    $case = 1;
                                }
                                if ($width > $height) {
                                    $case = 2;
                                }
                                if ($width < $height) {
                                    $case = 3;
                                }

                                switch ($case) {
                                    // Square
                                    case 1:
                                        $newwidth = 200;
                                        $newheight = 200;
                                        break;

                                    // Lying rectangle
                                    case 2:
                                        $newheight =

                                            200;
                                        $ratio = $newheight / $height;
                                        $newwidth = round($width * $ratio);

                                        echo $newwidth . 'x' . $newheight;

                                        break;

                                    // Standing rectangle
                                    case 3:
                                        $newwidth = 200;
                                        $ratio = $newwidth / $width;
                                        $newheight =

                                            round($height * $ratio);
                                        break;
                                }
                                switch ($type) {
                                    case 'image/jpeg';
                                        $img =

                                            imagecreatefromjpeg($temp);
                                        $thumb =

                                            imagecreatetruecolor($newwidth, $newheight);
                                        imagecopyresized($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                                        imagejpeg($thumb, $thumb_path);
                                        break;

                                    case 'image/png';
                                        $img =

                                            imagecreatefrompng($temp);
                                        $thumb =

                                            imagecreatetruecolor($newwidth, $newheight);
                                        imagecopyresized($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                                        imagepng($thumb, $thumb_path);
                                        break;

                                    case 'image/gif';
                                        $img =

                                            imagecreatefromgif($temp);
                                        $thumb =

                                            imagecreatetruecolor($newwidth, $newheight);
                                        imagecopyresized($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                                        imagegif($thumb, $thumb_path);
                                        break;
                                }
                                change_avatar_image($user_id, $temp, $ext, $upload);

                            } else {
                                echo 'Your image size is too big.';
                            }
                        } else {
                            echo '<p>Your image resolution exceeds the limit.</p>';
                        }

                    } else {
                        echo 'You have uploaded a forbidden extension.';
                    }
                }
            }
            if (empty($user_data['Avatars']) === false) {
                echo '<img src="', $user_data['Avatars'], '">';
            }
            ?>
            <div id="avatar">
            </div>
            <div class="form">
                <form action="" method="post" enctype="multipart/form-data"><br>
                    <input type="file" name="image"><br>
                    <input type="submit" value="Upload">
                </form>
            </div>
        </div>
    <?php
    } else {
        echo "Sorry, that user doesn't exist.";
    }
} else {
    header('Location: index.php');
    exit();
}
include "includes/overall/footer.php"; ?>

関数.php

function change_avatar_image($user_id, $temp, $ext, $upload) {
$path=   'images/avatars/' . $upload . $ext;
move_uploaded_file($temp, $path);

mysql_query("UPDATE users SET Avatars = '" . $path . "' WHERE user_id = " .  `(int)$user_id);`

}

コードの見方についてお詫び申し上げます。ここに適切に投稿するのに苦労しています。

4

0 に答える 0