snippet voor foto resize - draai issue

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Chris Bosmans

chris Bosmans

25/01/2016 23:05:37
Quote Anchor link
ik gebruik onderstaand resize script
dit werkt perfect.


nu alleen 1 ding
als ik de foto in windows verkenner omdraai (bijv 90°) en dan de foto wil uploaden
laad hij deze op maar niet als de 90° gedraaide foto, wel als de originele versie.

dit is niet echt handig als je fotos hebt getrokken die normaal portret gezien moeten worden
iemand idee

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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php

/*Toegestane mime-types*/
    $msgs_1 = array ();
    $errs_1 = array ();
    /*
        Constanten voor exif_imagetype ()
        1      IMAGETYPE_GIF
        2     IMAGETYPE_JPEG
        3     IMAGETYPE_PNG
    */

    $allowed_1 = array (IMAGETYPE_JPEG,IMAGETYPE_PNG,IMAGETYPE_GIF);

    function
resize_1 ($path_1, $dst_w_1) {
        list ($src_w_1, $src_h_1) = getimagesize ($path_1);
        if ($dst_w_1 < $src_w_1) {
            $ratio_1 = $dst_w_1 / $src_w_1;
            $dst_h_1 = ceil ($ratio_1 * $src_h_1);
            $src_1 = imagecreatefromjpeg ($path_1);
            $dst_1 = imagecreatetruecolor ($dst_w_1, $dst_h_1);
            imagecopyresampled ($dst_1, $src_1, 0, 0, 0, 0, $dst_w_1, $dst_h_1, $src_w_1, $src_h_1);
            imagejpeg ($dst_1, $path_1, 80);
            imagedestroy ($src_1);
            imagedestroy ($dst_1);
        }
    }

    
    // business logic
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $n_1 = count ($_FILES['userfile_1']['error']);
        for ($i_1 = 0; $i_1 < $n_1; $i_1++) {
            if (!$_FILES['userfile_1']['error'][$i_1]) {
                $tmp_1 = $_FILES['userfile_1']['tmp_name'][$i_1];
                $name_1 = time().date("m")."1".strrchr($_FILES['userfile_1']['name'][$i_1], ".");
                $dir_1 = '../../klantpic/';
                if (!in_array (exif_imagetype ($tmp_1), $allowed_1)) {
                    array_push ($errs_1, 'Sorry, alleen JPG');

                }

                elseif ($_FILES['userfile_1']['size'][$i_1] > 50000) {
                    array_push ($errs_1, 'Sorry, foto te groot');
                }

                else {
                    $path_1 = $dir_1 . $name_1;
                    if (is_uploaded_file ($tmp_1)) {
                        if (move_uploaded_file ($tmp_1, $path_1)) {
                            resize_1 ($path_1, 1000);
                        }
                    }
                }
            }
        }
    }
?>
 
PHP hulp

PHP hulp

22/12/2024 12:58:34
 
Randy vsf

Randy vsf

25/01/2016 23:57:41
Quote Anchor link
dat komt omdat in de EXIF een rotation value is ingesteld.

lees de comments eens op php.net

Daar zie je staan:
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
<?php
$image
= imagecreatefromstring(file_get_contents($_FILES['image_upload']['tmp_name']));
$exif = exif_read_data($_FILES['image_upload']['tmp_name']);
if(!empty($exif['Orientation'])) {
    switch($exif['Orientation']) {
        case
8:
            $image = imagerotate($image,90,0);
            break;
        case
3:
            $image = imagerotate($image,180,0);
            break;
        case
6:
            $image = imagerotate($image,-90,0);
            break;
    }
}

// $image now contains a resource with the image oriented correctly
?>
Gewijzigd op 25/01/2016 23:58:48 door Randy vsf
 
Chris Bosmans

chris Bosmans

02/02/2016 21:10:43
Quote Anchor link
hey Randy ok merci

de foto staat nu op de juiste richting in de upload folder
maar de foto zelf op de site is niet mee gedraaid staat nog in originele setting
(dus stond de foto in portret in verkenner en ik draai hem naar landscape -> laad ik deze op->
in de folder op de server staat de foto als landscape maar op de website staat hij nog steeds in portret mode)

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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
/*Toegestane mime-types*/
    $msgs_1 = array ();
    $errs_1 = array ();
    /*
        Constanten voor exif_imagetype ()
        1      IMAGETYPE_GIF
        2     IMAGETYPE_JPEG
        3     IMAGETYPE_PNG
    */

    $allowed_1 = array (IMAGETYPE_JPEG,IMAGETYPE_PNG,IMAGETYPE_GIF);

    function
resize_1 ($path_1, $dst_w_1) {
        list ($src_w_1, $src_h_1) = getimagesize ($path_1);
        if ($dst_w_1 < $src_w_1) {
            $ratio_1 = $dst_w_1 / $src_w_1;
            $dst_h_1 = ceil ($ratio_1 * $src_h_1);
            $src_1 = imagecreatefromjpeg ($path_1);
            $dst_1 = imagecreatetruecolor ($dst_w_1, $dst_h_1);
            imagecopyresampled ($dst_1, $src_1, 0, 0, 0, 0, $dst_w_1, $dst_h_1, $src_w_1, $src_h_1);
            imagejpeg ($dst_1, $path_1, 70);
            imagedestroy ($src_1);
            imagedestroy ($dst_1);
        }
    }

    
    // business logic
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $n_1 = count ($_FILES['userfile_1']['error']);
        for ($i_1 = 0; $i_1 < $n_1; $i_1++) {
            if (!$_FILES['userfile_1']['error'][$i_1]) {
                $tmp_1 = imagecreatefromstring(file_get_contents($_FILES['userfile_1']['tmp_name'][$i_1]));
                $exif = exif_read_data($_FILES['userfile_1']['tmp_name'][$i_1]);
                
                if(!empty($exif['Orientation'])) {
                         switch($exif['Orientation'])
                          {
                                case
8:
                                   $tmp_1 = imagerotate($tmp_1,90,0);
                                 break;
                                 case
3:
                                    $tmp_1 = imagerotate($tmp_1,180,0);
                                    break;
                                 case
6:
                                   $tmp_1 = imagerotate($tmp_1,-90,0);
                                 break;
                          }
                                                  }


              
        $name_1 = time().date("m")."1".strrchr($_FILES['userfile_1']['name'][$i_1], ".");
                $dir_1 = '../../../../gallerij/webpic/';

            
            
                if (!in_array (exif_imagetype ($tmp_1), $allowed_1)) {
                    array_push ($errs_1, 'Sorry, alleen JPG');

                }

                elseif ($_FILES['userfile_1']['size'][$i_1] > 50000000) {
                    array_push ($errs_1, 'Sorry, 50 KB max');
                }

                else {
                    $path_1 = $dir_1 . $name_1;
                    if (is_uploaded_file ($tmp_1)) {
                        if (move_uploaded_file ($tmp_1, $path_1)) {
                            resize_1 ($path_1, 1500);
                        }
                    }
                }
            }
        }
    }
?>
Gewijzigd op 02/02/2016 21:11:47 door chris Bosmans
 



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.