[PHP] createimagefromjpg probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • FlashAddict
  • Registratie: Juni 2001
  • Laatst online: 22-08-2020
Ik heb een script geschreven voor een klant die graag zelf foto's op de website wil zetten. Na het testen met verschillende JPEG's leek het script perfect te werken, alleen voor de klant bleek het onmogelijk om een foto te uploaden. De klant blijkt een digitale camera met 5 megapixels te gebruiken en schiet de foto's op volle resolutie. De foto's die gemaakt worden bevatten een JPEG header en footer dus daar kan het niet aan liggen. Ook de bestandsgrootte van ongeveer 1MB is geen probleem (ik heb het geprobeerd met andere JPEG's van min. 2MB). Nu blijkt dat wanneer het formaat van de foto groter is dan 1405x1054 de website over zijn nek gaat en een broken link geeft. 1404x1053 is geen probleem. Is dit een bekend probleem van imagecreatefromjpg of is het een instelling van de server? En heeft iemand een workaround (op dit moment probeer ik imagemagick geinstalleerd te krijgen maar mijn hosting partij doet moeilijk hierover).

Hieronder het script:
PHP:
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
class Pictures
{
    function Pictures ()
    {
        set_time_limit ( 0 );
        ignore_user_abort ( true );
    }


    function upload ( $files )
    {
        $filename = $files["picture"][ "name" ];
        $source = $files["picture"]["tmp_name"];
        
        $this->createThumbnail ( $source, "images/gallery/thumbnails/".$filename );
        $this->createPicture ( $source, "images/gallery/".$filename );
    }


    function createPicture ( $source, $destination )
    {
        $myImage = $this->resize ( $source, 480, 360 );
        imagejpeg ( $myImage, $destination, 100 );
    }


    function createThumbnail ( $source, $destination )
    {
        $myImage = $this->resize ( $source, 200, 150 );
        imagejpeg ( $myImage, $destination, 75 );
    }


    function resize ( $source, $width, $height ) 
    {
        $mySource = imagecreatefromjpeg ( $source );
        $myDestination = imagecreatetruecolor ( $width, $height );
        
        $myInfo = getimagesize ( $source );
        imagecopyresampled ( $myDestination, $mySource, 0, 0, 0, 0, $width, $height, $myInfo[ 0 ], $myInfo[ 1 ] );
        
        return $myDestination;
    }
}

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Ik heb totaal geen problemen daarmee. Zelfs 6MPix foto's werkt het goed mee, alhoewel dat niet goed is voor de laadtijd :D

Wat zou kunnen zijn is dat je over de geheugenlimiet van je hoster gaat. Grotere plaatjes hebben meer geheugen nodig.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

In PHP het geheugen dat je script mag gebruiken wat opschroeven :)

Dit is standaard wat laag (wat normaal geen probleem is), maar wel zodra het script met grotere afbeeldingen aan de slag moet.

Even opgezocht:

volgens mij was het memory_limit

Die op -1 zetten en je kunt oneindig veel geheugen gebruiken in je script.

Providers hebben deze setting vaak wat lager staan dan de default 8M.

[ Voor 92% gewijzigd door Bosmonster op 01-08-2005 11:25 ]


Acties:
  • 0 Henk 'm!

  • FlashAddict
  • Registratie: Juni 2001
  • Laatst online: 22-08-2020
Probleem opgelost!

De hostingpartij heeft het memorylimiet opgeschroefd naar 32MB ipv. 8MB!

[ Voor 6% gewijzigd door FlashAddict op 01-08-2005 11:26 ]