Meerdere foto's uploaden met compressie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rob Rob

Rob Rob

19/10/2018 10:32:49
Quote Anchor link
Hallo,

Ik heb een vraagje,

In Html heb ik een forum gemaakt waar je meerdere foto's kunt uploaden. Maar nu loop ik tegen een probleem aan.....de meesten foto's die je wilt uploaden zijn groter dan de maximale 2MB die mag uploaden in PHP. Dus ben ik op internet eens fink gaan zoeken naar PHP image compression. Hier legt echter niemand uit hoe dit werkt bij meerdere foto's.....

Hier is mijn code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Attachment:<br>
<input class="form-control" type="file" name="attachments[]" id="attachments" multiple style="width:300px">


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
for($i = 0; $i < count($_FILES['attachments']['name']); $i++) {
        $filetmp = $_FILES["attachments"]["tmp_name"][$i];
        $filename = $_FILES["attachments"]["name"][$i];
        $filepath = "images/".$filename;

        move_uploaded_file($filetmp,$filepath);

        $querypictureupload = "INSERT INTO file_upload (filename)
        VALUES ('$filename')"
;
        $result = mysqli_query($conn, $querypictureupload);
    }

?>



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Attachment:<br>
<input class="form-control" type="file" name="image" id="image" style="width:300px">


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if (isset($_POST['submit'])) {
    $target = "images/";
    $target = $target.basename($_FILES['image']['name']);

    $photo_name = ($_FILES['image']['name']);
    $imageFileType = pathinfo($target, PATHINFO_EXTENSION);
    $file = $photo_name;

    $query = "INSERT INTO photos(image) VALUES ('$file')";
    $result = mysqli_query($conn, $query);

    if ($result && compress($_FILES['image']['tmp_name'], $target, 50)) {
        echo "<script>alert('Image uploaded')</script>";
    }

    else {
        echo "<script>alert('An error occured')</script>";
    }
}

?>


--FUNCTIONS.PHP--
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function compress($source, $destination, $quality){
        $info = getimagesize($source);

        if ($info['mime'] == 'image/jpeg')
            $image = imagecreatefromjpeg($source);
        elseif ($info['mime'] == 'image/gif')
            $image = imagecreatefromgif($source);
        elseif ($info['mime'] == 'image/png')
            $image = imagecreatefrompng($source);

        imagejpeg($image, $destination, $quality);

        return $destination;
    }

?>


Zoals hier boven in het 1e bestand te zien is kan je meerdere foto's uploaden, waar je in de 2e maar 1 kan uploaden maar deze wel verkleind wordt......

Is er iemand die mij kan helpen met het samenvoegen van deze 2 bestanden zodat je meerdere foto's kunt oploaden en dezen worden verkleind! Zelf had ik geprobeert op de function te verwerken in de for loop maar dat lukt niet helemaal..

Alvast bedankt

Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 19/10/2018 18:10:18 door - Ariën -
 
PHP hulp

PHP hulp

14/11/2018 02:38:29
 
- Ariën -
Beheerder

- Ariën -

19/10/2018 11:33:53
Quote Anchor link
Kan je code-tags om je scripts plaatsen? Dan is het beter leesbaarder. Zie ook de Veelgestelde Vragen.

Ikzelf gebruik de uploadclass van Verot.net. Werkt super handig. En als je bestanden groter dan 2MB wilt uploaden, moet je jouw uploadlimiet aanpassen. Compressie heeft niks met het uploadproces te maken.
Gewijzigd op 19/10/2018 11:41:36 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

19/10/2018 14:45:39
Quote Anchor link
Het lijkt mij zaak dat je $filetmp omzet naar een gecomprimeerde variant (waarbij je wellicht ook kunt denken aan een maximale horizontale / verticale afmeting), en dan die variant permanent opslaat. move_uploaded_file() is dan waarschijnlijk niet nodig.

In een ander draadje kwam dit geval voorbij, volgens mij kan dat ding ook aan de client zijde afbeeldingen verkleinen (qua afmeting, dus niet zozeer compressie wellicht).
 
Rob Doemaarwat

Rob Doemaarwat

19/10/2018 17:07:00
Quote Anchor link
En je kunt/mag niet in je php.ini gewoon upload_max_filesize (en post_max_size!) flink opschroeven?
 
- Ariën -
Beheerder

- Ariën -

19/10/2018 18:11:32
Quote Anchor link
Ik weet wel dat PLupload aan chunking doet, door een bestand op te delen. Zo omzeil je die limiet.
2MB is overigens belachelijk weinig. Een beetje gemiddelde foto is tegenwoordig al 7 MB.
 
Jan te Pas

Jan te Pas

21/10/2018 13:30:42
Quote Anchor link
Er is zeer veel info. Je kunt met een script voordat een foto daadwerkelijk geüpload wordt resizen. Wellicht is dit een oplossing. Jij bepaalt vooraf de formaten die geüpload mogen worden. En dan laat je het script de rest doen. Hier ene link met, mogelijk, een oplossing:https://stackoverflow.com/questions/23945494/use-html5-to-resize-an-image-before-upload
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.