/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Memory_limit GD-lib
Fra : Jimmy skov Adetunji


Dato : 16-01-10 17:12

Jeg bruger gd-lib kommando til gennem php at ændre dimmensionerne
på de billeder der bliver uploaded til et webhotel, men det er
som om at nogle billeder er for store til at blive behandlet.
Jeg har webhotel hos one.com
deres memory_limet er 32mb
og 16mb gennem php

De billeder der giver problemer har ikke en størrelse der
overstiger 4mb. Kan det have noget at gøre med antal pixels?

Venligst
jimmy Adetunji

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Peter Farsinsen (16-01-2010)
Kommentar
Fra : Peter Farsinsen


Dato : 16-01-10 17:35

Jimmy skov Adetunji wrote:
> Jeg bruger gd-lib kommando til gennem php at ændre dimmensionerne
> på de billeder der bliver uploaded til et webhotel, men det er
> som om at nogle billeder er for store til at blive behandlet.
> Jeg har webhotel hos one.com
> deres memory_limet er 32mb
> og 16mb gennem php
>
> De billeder der giver problemer har ikke en størrelse der
> overstiger 4mb. Kan det have noget at gøre med antal pixels?

Størrelsen i mb har vist ikke så meget at sige. Du kan sjusse dig frem
til, hvor meget hukommelse GD bruger på at åbne et billede ved at finde
antallet af pixels (h*w) og gange det med 4 (en byte for hhv. r, g, b og
og alpha-kanalen).

Et billede på 1280*1024 tager ca. 5mb.

((1280*1024)*4)/1048576 = 5mb

Hvis du åbner flere canvas, glemmer at rydde op etc. har du hurtigt
brugt dine 16mb.

Har One ImageMagick (http://php.net/manual/en/book.imagick.php)?

- Peter

Birger Sørensen (17-01-2010)
Kommentar
Fra : Birger Sørensen


Dato : 17-01-10 00:35

Peter Farsinsen forklarede:
> Jimmy skov Adetunji wrote:
>> Jeg bruger gd-lib kommando til gennem php at ændre dimmensionerne
>> på de billeder der bliver uploaded til et webhotel, men det er
>> som om at nogle billeder er for store til at blive behandlet.
>> Jeg har webhotel hos one.com
>> deres memory_limet er 32mb
>> og 16mb gennem php
>>
>> De billeder der giver problemer har ikke en størrelse der
>> overstiger 4mb. Kan det have noget at gøre med antal pixels?
>
> Størrelsen i mb har vist ikke så meget at sige. Du kan sjusse dig frem til,
> hvor meget hukommelse GD bruger på at åbne et billede ved at finde antallet
> af pixels (h*w) og gange det med 4 (en byte for hhv. r, g, b og og
> alpha-kanalen).
>
> Et billede på 1280*1024 tager ca. 5mb.
>
> ((1280*1024)*4)/1048576 = 5mb
>
> Hvis du åbner flere canvas, glemmer at rydde op etc. har du hurtigt brugt
> dine 16mb.
>
> Har One ImageMagick (http://php.net/manual/en/book.imagick.php)?
>
> - Peter

Hvis billedet kun bruger 4 farver, er eksemplet rigtigt.
h*w*farvedybde er mere i retning af det rigtige.
Dette fordi, PHP når man arbejder med billeder, skal bruge et bitmap -
..bmp - PHP kan ikke regne på komprimerede billeder.
Og til det brug, er one.com slet ikke brugbart. Så der skal enten
skiftes hotel, eller findes et bibliotek, der kan det der er brug for,
uden at overskride de 16Mb.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Jimmy skov Adetunji (18-01-2010)
Kommentar
Fra : Jimmy skov Adetunji


Dato : 18-01-10 14:34

Jeg har undersøgt det lidt nærmere og er overbevist om at det ikke er
filstørrelsen i mb, som er problemet. Tænker at det nok er den måde jeg ændre
størrelsen på billederne. Som nævnt er det kun nogle billeder der ikke kan vises.
Det skal nævnes at alle billederne uploades til mappen, men nogle kan altså ikke
blive omdøbt og skaleret. Siden er at find her: www.skjold-foto.dk/uploader4.php

Jeg indsætter den relevante del nedenfor:

<?php
if (array_key_exists('btn', $_POST))
         {   
// DENNE AFSLUTTES I LINE 224


$filename = $_FILES ['frmfile']['name'];
$imageSize = getimagesize('images/'.$filename);
         
list($bredde, $hojde) = $imageSize;   //Find hjden og bredden på det billede jeg
vil resize
         
if ($hojde>$bredde)   $stforhold = $hojde/$bredde;
else             $stforhold = $bredde / $hojde;
         

$hight_percent = round ($hojde* 0.01);      
$width_percent = round ($bredde * 0.01);

if ($hight_percent<$width_percent)
   {
$max_width = 440 * $stforhold;
$max_hight = 440;
   }
elseif ($hight_percent>$width_percent)
   {
$max_width = 295;
$max_hight = 295 * $stforhold;
   }
$hight_cal = $hight_percent * $stforhold;
while ($hight_cal < $max_hight)
   {
   $hight_cal++;
   $hojde_ny=$hight_cal;
   
}
$width_cal = $width_percent * $stforhold;
while ($width_cal < $max_width)
{
   $width_cal++;
   $bredde_ny=$width_cal;
}


?>


<?

      /*
            Array ( [frmfile] => Array ( [name] => 200181513-001.jpg [type] => image/jpeg
[tmp_name] => /tmp/phpI4MqtO [error] => 0 [size] => 2482 ) )
      */

$pattern1 = "/.jpg/";
$pattern2 = "/.gif/";
$pattern3 = "/.png/";
$pattern4 = "/.tif/";
   
      //INDLSES DET ORIGINALE BILLED OG ET TOMT MED DEN NYE STØRRELSE
if    (preg_match($pattern1, $filename))
    {
$source = imagecreatefromjpeg("images/".$filename);
$destination = imagecreatetruecolor(round ($bredde_ny), round($hojde_ny));
imagecopyresampled($destination, $source, 0, 0, 0, 0, round ($bredde_ny), round
($hojde_ny), round($bredde), round($hojde));

$find = array("æ", "Æ", "ø", "Ø", "å", "Å", " ");
$erstat = array("ae", "&AElig", "oe","&Oslash;","aa","&Aring;", "_");
$new_file_name = "ny".$filename;
$new_file_name = str_replace($find, $erstat, $new_file_name); // Sætter
variablen besked til den værdi man har skrevet OG erstatter æ, ø og å med deres
korrekte                   
//værdier.
//DER LAVES TO "IMAGEJPEG" FOR AT BILLEDGALLERIET BÅDE HAR EN VERSION I "THUMBS"
OG "IMAGES"
imagejpeg($destination, 'images/thumbs/'.$new_file_name);
imagejpeg($destination, 'images/'.$new_file_name);
unlink("images/$filename"); //Den oprindelige fil slettes for at spare plads p
server

      }



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Bertel Lund Hansen (18-01-2010)
Kommentar
Fra : Bertel Lund Hansen


Dato : 18-01-10 15:14

Jimmy skov Adetunji skrev:

> Jeg har undersøgt det lidt nærmere og er overbevist om at det ikke er
> filstørrelsen i mb, som er problemet. Tænker at det nok er den måde jeg ændre
> størrelsen på billederne.

Jeg har lavet et skaleringsskript som jeg bruger i flere
sammenhænge. Det skalerer relativt store billeder uden at jeg er
løbet ind i problemer (endnu). Scriptene kører på mit webhotel
hos Gigahost.

Her er min demoside:
http://bertel.lundhansen.dk/webdesign/diasshow.php

og på den er der links til visning af koden samt en zipfil med
det hele i undtagen billederne.

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Jimmy skov Adetunji (18-01-2010)
Kommentar
Fra : Jimmy skov Adetunji


Dato : 18-01-10 16:08

Hej Bertel
Mange tak for din henvisning. Det er jo præcis det resultat jeg gerne vil opnå.
Jeg må lige tygge mig igennem det hele og arbejde med at passe det ind.
forestiller mig egentlig at det er noget med at jeg implementere kommandoen der
angiver den maksimale størrelse for en enkelt af billedet sider. i stedet for den
noget kringlede udregning jeg laver pt.

Skulle der være andre bud på hvad der konkret er galt med måden jeg har lavet min
kode på, er jeg meget interesseret, da det jo er p.. irriterende, når man ikke kan
gennemskue hvorfor noget virker i langt de fleste tilfælde men alligevel til tider
fejler.


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (18-01-2010)
Kommentar
Fra : Stig Johansen


Dato : 18-01-10 16:17

Jimmy skov Adetunji wrote:

> Skulle der være andre bud på hvad der konkret er galt med måden jeg har
> lavet min kode på, er jeg meget interesseret, da det jo er p..
> irriterende, når man ikke kan gennemskue hvorfor noget virker i langt de
> fleste tilfælde men alligevel til tider fejler.

Læs mit andet svar.
Jeg kender ikke så meget til PHP, men vær opmærksom på at memory først
bliver frigivet når GC (Garbage collector) synes det er passende.

Måske kan nogle PHP hajer byde ind på om det er muligt at tvinge en
frigivelse igennem, frem for at vente på at memory går ud af scope.

--
Med venlig hilsen
Stig Johansen

Peter Farsinsen (18-01-2010)
Kommentar
Fra : Peter Farsinsen


Dato : 18-01-10 16:59

Stig Johansen wrote:
>> Skulle der være andre bud på hvad der konkret er galt med måden jeg har
>> lavet min kode på, er jeg meget interesseret, da det jo er p..
>> irriterende, når man ikke kan gennemskue hvorfor noget virker i langt de
>> fleste tilfælde men alligevel til tider fejler.

Jeg er stadigvæk overbevist om, at srciptet dør fordi der bruges for
meget hukommelse. Jimmy, outputter du fejlmeddelelser, så du kan se om
PHP snakker til dig?

> Læs mit andet svar.
> Jeg kender ikke så meget til PHP, men vær opmærksom på at memory først
> bliver frigivet når GC (Garbage collector) synes det er passende.
>
> Måske kan nogle PHP hajer byde ind på om det er muligt at tvinge en
> frigivelse igennem, frem for at vente på at memory går ud af scope.

Ja, imagedestroy($img); smider et billede væk.

Konkret kan det bruges til at smide $source væk her:

$source = imagecreatefromjpeg("images/".$filename);
$destination = imagecreatetruecolor(round ($bredde_ny), round($hojde_ny));
imagecopyresampled($destination, $source, 0, 0, 0, 0, round
($bredde_ny), round
($hojde_ny), round($bredde), round($hojde));

// Smid source væk og frigiv hukommelsen
imagedestroy($source);

Kig også på memory_get_usage(); det kunne være en måde at finde ud af,
hvor meget ram der rent faktisk bliver brugt.

- Peter

Jimmy skov Adetunji (18-01-2010)
Kommentar
Fra : Jimmy skov Adetunji


Dato : 18-01-10 17:35

Peter Farsinsen wrote in dk.edb.internet.webdesign.serverside.php:
> Stig Johansen wrote:
> >> Skulle der være andre bud på hvad der konkret er galt med måden jeg har
> >> lavet min kode på, er jeg meget interesseret, da det jo er p..
> >> irriterende, når man ikke kan gennemskue hvorfor noget virker i langt de
> >> fleste tilfælde men alligevel til tider fejler.
>
> Jeg er stadigvæk overbevist om, at srciptet dør fordi der bruges for
> meget hukommelse. Jimmy, outputter du fejlmeddelelser, så du kan se om
> PHP snakker til dig?
>
>Jeg har netop tænkt at jeg skulle få php til at "snakke lidt". hvordan beder
jeg om det? ligesom mysql (or die mysql_error())?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Peter Farsinsen (18-01-2010)
Kommentar
Fra : Peter Farsinsen


Dato : 18-01-10 22:58

Jimmy skov Adetunji wrote:

>> Jeg er stadigvæk overbevist om, at srciptet dør fordi der bruges for
>> meget hukommelse. Jimmy, outputter du fejlmeddelelser, så du kan se om
>> PHP snakker til dig?
>>
> Jeg har netop tænkt at jeg skulle få php til at "snakke lidt". hvordan beder
> jeg om det? ligesom mysql (or die mysql_error())?

Kig på error_reporting(); og display_errors(); på php.net ;)

- Peter

Jimmy skov Adetunji (18-01-2010)
Kommentar
Fra : Jimmy skov Adetunji


Dato : 18-01-10 18:01

Hej Bertel

Jeg har afprøvet dit system og sjovt nok kan det heller ikke behandle de billeder
som mit eget ikke kan behandle.
Jeg tænker at forklaringen må ligge i det Stigs indlæg.

Hilsen og tak
jimmy Adetunji

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (18-01-2010)
Kommentar
Fra : Stig Johansen


Dato : 18-01-10 15:58

Jimmy skov Adetunji wrote:

> Jeg har undersøgt det lidt nærmere og er overbevist om at det ikke er
> filstørrelsen i mb, som er problemet.

Som Birger skriver, så er det ikke filstørrelsen (alene) der er afgørende,
men den bitmap der skal bruges til at manipulere billedet.

Med den indstilling jeg har på mit kamara, produceres billeder med en
opløsning på 2592x1944.

Filen (jpg) i sig selv fylder 2-3 mb afhængig af ensartetheden i indholdet.

Så initielt skal du bruge 2-3 mb (din post variable), og her skal genereres
et workspace(bitmap) på 2592x1944x32 bit= ca. 19,2 mb.

Dvs et mindsteforbrug på 21-22 mb, og hertil skal du lægge størrelsen af
output bitmappen til - i dit tilfælde ca 0,75 mb.

Så alt i alt skal du bruge ca. 23 mb selvom _filstørrelsen_ kun er et par
mb.

Men prøv at undersøge om ikke der er en sammenhæng mellem pixelstørrelsen og
dit memoryforbrug.

--
Med venlig hilsen
Stig Johansen

Jimmy skov Adetunji (18-01-2010)
Kommentar
Fra : Jimmy skov Adetunji


Dato : 18-01-10 17:45

Stig Johansen wrote in dk.edb.internet.webdesign.serverside.php:
> Jimmy skov Adetunji wrote:
>
> > Jeg har undersøgt det lidt nærmere og er overbevist om at det ikke er
> > filstørrelsen i mb, som er problemet.
>
> Som Birger skriver, så er det ikke filstørrelsen (alene) der er afgørende,
> men den bitmap der skal bruges til at manipulere billedet.
>
> Med den indstilling jeg har på mit kamara, produceres billeder med en
> opløsning på 2592x1944.
>
> Filen (jpg) i sig selv fylder 2-3 mb afhængig af ensartetheden i indholdet.
>
> Så initielt skal du bruge 2-3 mb (din post variable), og her skal genereres
> et workspace(bitmap) på 2592x1944x32 bit= ca. 19,2 mb.
>
> Dvs et mindsteforbrug på 21-22 mb, og hertil skal du lægge størrelsen af
> output bitmappen til - i dit tilfælde ca 0,75 mb.
>
> Så alt i alt skal du bruge ca. 23 mb selvom _filstørrelsen_ kun er et par
> mb.
>
> Men prøv at undersøge om ikke der er en sammenhæng mellem pixelstørrelsen
og
> dit memoryforbrug.
Det giver ganske god mening for mig det du skriver.
Det må jeg jo nok bare leve med så







--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Birger Sørensen (18-01-2010)
Kommentar
Fra : Birger Sørensen


Dato : 18-01-10 19:02

Jimmy skov Adetunji sendte dette med sin computer:
> Stig Johansen wrote in dk.edb.internet.webdesign.serverside.php:
8X
>> Men prøv at undersøge om ikke der er en sammenhæng mellem pixelstørrelsen og
>> dit memoryforbrug.
> Det giver ganske god mening for mig det du skriver.
> Det må jeg jo nok bare leve med så

eller finde en host, der tillader brug af nok RAM.

Helt præcist er det formentlig i linien
$source = imagecreatefromjpeg("images/".$filename);
problemet opstår - der oprettes et bitmap (ikke komprimeret) kopi af
det originale billede - og det er der ikke RAM til hos one.com.
(Jeg har selv prøvet hos one.com - også at få mere RAM til rådighed -
og de er/var hverken til at hugge eller stikke i)

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Jimmy skov Adetunji (18-01-2010)
Kommentar
Fra : Jimmy skov Adetunji


Dato : 18-01-10 22:45


> Helt præcist er det formentlig i linien
> $source = imagecreatefromjpeg("images/".$filename);
> problemet opstår - der oprettes et bitmap (ikke komprimeret) kopi af
> det originale billede - og det er der ikke RAM til hos one.com.
> (Jeg har selv prøvet hos one.com - også at få mere RAM til rådighed -
> og de er/var hverken til at hugge eller stikke i)

Har også vværet i kontakt med dem og erfaret det samme, men der er jo en grund til
at prisen kan holdes ned. Jeg har brugt dem i mange år og er generelt glad for
deres servicer så jeg lever med det.
tak for præciseringen.

jimmy

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Peter Farsinsen (18-01-2010)
Kommentar
Fra : Peter Farsinsen


Dato : 18-01-10 22:54

Jimmy skov Adetunji wrote:
> Har også vværet i kontakt med dem og erfaret det samme, men der er jo en grund til
> at prisen kan holdes ned. Jeg har brugt dem i mange år og er generelt glad for
> deres servicer så jeg lever med det.
> tak for præciseringen.

Har du undersøgt om det understøtter ImageMagick? Det er min erfaring at
det bruger langt færre ressourcer end GD (og det er meget lettere at bruge).

- Peter

Jimmy skov Adetunji (19-01-2010)
Kommentar
Fra : Jimmy skov Adetunji


Dato : 19-01-10 22:51


>
> Har du undersøgt om det understøtter ImageMagick? Det er min erfaring at
> det bruger langt færre ressourcer end GD (og det er meget lettere at bruge).
>
Hej Peter
Det er jeg faktisk kommet væk fra igen, men vil da lige kigge på sagen.
Tak for påmindelsen

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jimmy skov Adetunji (19-01-2010)
Kommentar
Fra : Jimmy skov Adetunji


Dato : 19-01-10 22:59

Peter Farsinsen wrote in dk.edb.internet.webdesign.serverside.php:
> Jimmy skov Adetunji wrote:
> > Har også vværet i kontakt med dem og erfaret det samme, men der er jo en grund til
> > at prisen kan holdes ned. Jeg har brugt dem i mange år og er generelt glad for
> > deres servicer så jeg lever med det.
> > tak for præciseringen.
>
> Har du undersøgt om det understøtter ImageMagick? Det er min erfaring at
> det bruger langt færre ressourcer end GD (og det er meget lettere at bruge).
>
Hej Igen
Det er der desværre ikke mulighed for gennem one.com



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste