Upload dan resize foto dengan php

0 suara
ditanyakan 15 Feb dalam Komputer oleh musang berbulu (120 poin)

Saya sudah membuat form untuk upload foto, tetapi bagaimana cara agar foto yang sudah berhasil di upload dapat di resize ukurannya agar menjadi lebih kecil. berikut ini contoh kodingnya:

<?php
if (!empty($_FILES['foto']) && $_FILES['foto']['error'] == 0) {
    $currentFolder = dirname($_SERVER['SCRIPT_FILENAME']) . '/';

    $uploaded = move_uploaded_file($_FILES['foto']['tmp_name'], $currentFolder . $_FILES['foto']['name']);
    if ($uploaded) {
        echo 'file berhasil di upload';
    } else {
        echo 'file gagal di upload';
    }
} else {
    // gagal upload file
}


?>
<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <form action="" method="post" enctype="multipart/form-data">
            <input type="file" name="foto">
            <button type="submit">Upload</button>
        </form>
    </body>
</html>

Terima Kasih

 

1 Jawaban

0 suara
dijawab 17 Feb oleh websurfer (620 poin)

Untuk resize foto dengan php dapat menggunakan fungsi-fungsi dari GD Library. dari contoh koding di atas dapat disisipkan koding di bawah ini untuk fungsi resizenya.

    $currentFolder = dirname($_SERVER['SCRIPT_FILENAME']) . '/';

    // tambahkan script di bawah ini
    $percentResize = 0.5;

    list($width, $height) = getimagesize($_FILES['foto']['tmp_name']);
    $newWidth = $width * $percentResize;
    $newHeight = $height * $percentResize;
    
    $newFoto = imagecreatetruecolor($newWidth, $newHeight);
    $uploaded = false;
    switch ($_FILES['foto']['type']) {
        case 'image/png':
            $source = imagecreatefrompng($_FILES['foto']['tmp_name']);
            imagecopyresized($newFoto, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
            $uploaded = imagepng($newFoto, $currentFolder . $_FILES['foto']['name']);
        break;
        case 'image/jpeg': 
            $source = imagecreatefromjpeg($_FILES['foto']['tmp_name']);
            imagecopyresized($newFoto, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
            $uploaded = imagejpeg($newFoto, $currentFolder . $_FILES['foto']['name']);
        break;
        case 'image/gif':
            $source = imagecreatefromgif($_FILES['foto']['tmp_name']);
            imagecopyresized($newFoto, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
            $uploaded = imagegif($newFoto, $currentFolder . $_FILES['foto']['name']);

        break;
    }
    // hapus file temporary
    unlink($_FILES['foto']['tmp_name']);

    // $uploaded = move_uploaded_file($_FILES['foto']['tmp_name'], $currentFolder . $_FILES['foto']['name']);
    // jangan lupa comment move_uploaded_file karena sudah tidak di perlukan lagi

koding di atas dapat merisize file foto dengan tipe jpeg, png dan gif, untuk file foto dengan tipe yang lain dapat menggunakan fungsi-fungsi lain yang di sediakan oleh GD library.

sumber: http://php.net/manual/en/function.imagecopyresized.php

...