В чем проблема в моем коде, когда речь идет о сжатии изображения и загрузке? - PullRequest
1 голос
/ 05 апреля 2020

ЧТО Я ХОЧУ ДОСТИГНУТЬ: Я хочу сжать загруженное изображение и отправить его на сервер для загрузки.

ЧТО ПРОБЛЕМА Я ПРОХОДИТ? Все работает нормально, но изображение не сжимается. Размер изображения такой же, как и раньше.

MARKUP

<form action="./imageUpload.php" method="POST" enctype="multipart/form-data" onsubmit="formD(el)">
    <input id="file" type="file" name="file">
    <input type="submit" value="submit" name="submit">
</form>
<div id="dis"></div>

SCRIPT

document.getElementById("file").addEventListener("change", function (event) {
        compress(event);
    });

function compress(e) {
    const width = 100;
    const height = 100;
    const fileName = e.target.files[0].name;
    const reader = new FileReader();
    reader.readAsDataURL(e.target.files[0]);
    reader.onload = event => {
        const img = new Image();
        img.src = event.target.result;
        img.onload = () => {
                let elem = document.createElement('canvas');
                elem.width = width;
                elem.height = height;
                let ctx = elem.getContext('2d');
                ctx.drawImage(img, 0, 0, width, height);
                ctx.canvas.toBlob((blob) => {
                    let file = new File([blob], fileName, {
                        type: 'image/jpeg',
                        lastModified: Date.now()
                    });
                }, 'image/jpeg', 1);
            },
            reader.onerror = error => console.log(error);
    };
}


PHP var_dump ($ _ FILES)

    array (size=5)
      'name' => string 'fruit.jpg' (length=9)
      'type' => string 'image/jpeg' (length=10)
      'tmp_name' => string 'C:\wamp64\tmp\php2C53.tmp' (length=25)
      'error' => int 0
      'size' => int 135454 //This is the actual size so compression is not happening
...