Avatar billede hugovipper Nybegynder
15. januar 2009 - 15:58 Der er 30 kommentarer og
1 løsning

Clear memory

Jeg vil høre om der er en måde at clear den memory man bruger når man resizer billeder.

For støder bare ind i den her:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 10368 bytes) in

har ikke mulighed for at ændre i config filer.
Avatar billede jakobdo Ekspert
15. januar 2009 - 20:23 #1
Så er der ikke andre løsninger, end at du må resize mindre billeder (med mindre menes i dimension X * Y)
Avatar billede d_v Nybegynder
15. januar 2009 - 21:59 #2
Du kan eventuelt bruge ini_set('memory_limit', {memory limit i byte her});
Hvis du ellers har lov til at køre den kommando.

Ellers vis du resizer flere billeder i samme script, så sørg for at unsette variablen hvor du har data i efter hver resize, kan måske gøre at du ikke bruger alt memory op.
Hvis det derimod kun er 1 billede, så er der ikke andet for at arbejde med mindre
Avatar billede hugovipper Nybegynder
15. januar 2009 - 22:00 #3
problemmet er at den tager og resizer 2 to 4 mindre og så er der ikke mere memory kan jeg gøre noget i mit script køre en foreach løkke på filerne.
Avatar billede d_v Nybegynder
15. januar 2009 - 22:14 #4
Efter hvert resize, gemmer du resultat til disk, og derefter unsetter variablen fra resultatet, for så at lave den næste resize.
Ikke sikkert det løser problemmet, men vil nedsætte memory forbrug. evt post koden her, så vi kan tage et kig på det.
Avatar billede dkfire Nybegynder
15. januar 2009 - 22:15 #5
imagedestroy kan måske bruges efter hver gang du har resize et billede for at frigive hukommelse.
Du kan jo evt vise noget kode, så vi har en ide om hvad det er du gør lige nu.
Avatar billede jakobdo Ekspert
15. januar 2009 - 22:15 #6
Hvor store er de 2 billeder du starter ud med ?
Avatar billede hugovipper Nybegynder
15. januar 2009 - 22:28 #7
Her er min kode men kan ikke finde ud af hvad jeg skal unset men der jo imagedestroy så ved ikke lige hvad problemmet er.

<?php
session_start();

                function resizeImage($src_file, $dest_file, $newWidth)
                {
                // find the image size
                $imginfo = @getimagesize($src_file);
                if ($imginfo == NULL)
                  return false;
               
                // height/width
                $srcWidth = $imginfo[0];
                $srcHeight = $imginfo[1];
               
                $ratioWidth = $srcWidth/$newWidth;
                $ratioHeight = 0;
                $destWidth = $newWidth;
                $destHeight = $srcHeight / $ratioWidth;
                $src_img = imagecreatefromjpeg($src_file);
                $dst_img = imagecreatetruecolor($destWidth,$destHeight);
                ImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $destWidth,(int)$destHeight, $srcWidth, $srcHeight);
                imagejpeg($dst_img, $dest_file, 100);
                imagedestroy($src_img);
                imagedestroy($dst_img); 
                return $dest_file;
                }

echo '<pre>';
print_r($_SESSION['orig']);
echo '</pre>';

foreach($_SESSION['orig'] as $key => $file)
{
    $orig ='./orig/'.$file;
    echo 'orignal billede ligger her "'.$orig.'"<br>';
    $lille = './128x128/'.$file;
    $stor = './640x480/'.$file;
    resizeImage($orig, $lille, "128");
    resizeImage($orig, $stor, "640");
    unset($src_img, $dst_img, );
}
?>
Avatar billede dkfire Nybegynder
15. januar 2009 - 22:36 #8
Når den at resize noget som helst ???
Og som jakobdo spørger, hvor store er dine billeder ??
Avatar billede hugovipper Nybegynder
15. januar 2009 - 22:37 #9
ja de 2 første
Avatar billede hugovipper Nybegynder
15. januar 2009 - 22:43 #10
de to første er 114KB og 77KB
Avatar billede dkfire Nybegynder
15. januar 2009 - 23:04 #11
og den næste har hvilke dimensioner ?
Avatar billede hugovipper Nybegynder
15. januar 2009 - 23:07 #12
det er jo lige meget det skal virke for alle billeder på under orignal størrelse på 3MB
Avatar billede hugovipper Nybegynder
15. januar 2009 - 23:07 #13
under 3MB
Avatar billede jakobdo Ekspert
16. januar 2009 - 07:25 #14
Det er nemlig ikke lige meget.
Selvom et billede er under 3MB, kan det godt have en størrelse i X * Y som overstiger grænsen.
Så det er bestemt ikke lige meget.
Avatar billede hugovipper Nybegynder
16. januar 2009 - 11:28 #15
det er den her linje fejlen sker '$src_img = imagecreatefromjpeg($src_file);'

mellem 630x755(114KB) og 2592x1944(1,27MB)
Avatar billede erikjacobsen Ekspert
16. januar 2009 - 11:34 #16
Man kan ikke resize billeder på 2592x1944 med 16 MB RAM til PHP (hvis jeg husker rigtigt)
Har du brug for det, skal du finde et webhotel, der stiller mere RAM til rådighed, evt. egen server.
Avatar billede jakobdo Ekspert
16. januar 2009 - 11:36 #17
Størrelsen : 2592x1944 er netop problemet.
Mener at have læst et sted, at 1 pixels fylder omkring 3bytes i memory.
Hvilket vil sige: 2592x1944 = 5038848 * 3bytes = 15116544 eller ca 15mb.
Avatar billede hugovipper Nybegynder
16. januar 2009 - 11:40 #18
kan man gøre det på en anden måde for sidder med one.com som host og det er for en forening så formanden kan ligge billeder i et galleri.

hvad er maks størrelse??
Avatar billede erikjacobsen Ekspert
16. januar 2009 - 11:43 #19
Prøv dig frem med max-størrelsen. Det afhænger også af hvad du ellers har i dit script. Du kan så glæde dig over, at du har 16MB - jeg mener rygter om one.com en gang sagde de havde 8 MB.

Formanden kunne jo også selv lave sine billeder i de rigtige størrelser - en dårlig resize i PHP står slet ikke mål med en beskæring, udvælgelse, resize, og diverse forbedringer, som man kan lave med et pasende fotoprogram.
Avatar billede hugovipper Nybegynder
16. januar 2009 - 11:50 #20
tester lokalt på en nas så det kan godt være der kun er 8MB det ved jeg ikke.

hvad program er enkelt og bruge til en person der ikke har så meget viden inden for området. Skal være et program hvor man bare smider et billede ind og for et andet ud i mindre størrelse.
Avatar billede jakobdo Ekspert
16. januar 2009 - 12:01 #21
Acdsee er bestemt godt.
Avatar billede hugovipper Nybegynder
16. januar 2009 - 12:07 #22
#Jakobdo Det skal være gratis


har lige spurgt one om hvor mere memory man har til rådighed den er på 16MB.
Avatar billede jakobdo Ekspert
16. januar 2009 - 12:37 #23
Det kunne du også se ved at smide en phpinfo() i en fil.

<?php
phpinfo();
?>
Avatar billede hugovipper Nybegynder
16. januar 2009 - 12:45 #24
ja men spurgte bare det var hurtigere

men et gratis hurtig let program til at gør billeder mindre i opløsningen.
Avatar billede jakobdo Ekspert
16. januar 2009 - 12:49 #25
ja men spurgte bare det var hurtigere... (det mener du sgu da ikke seriøst)
At skrive de 2 linjer tager jo 2 sekunder.
Avatar billede hugovipper Nybegynder
16. januar 2009 - 12:59 #26
jamen så skulle jeg åbne ftp program og lave den php fil åbne internet. sad inde på one alligevel.

men det er ikke det som det handler om.
godt gratis program.
Avatar billede jakobdo Ekspert
16. januar 2009 - 13:10 #27
Et godt gratis program må være Linux, helt klart.
Avatar billede hugovipper Nybegynder
16. januar 2009 - 13:44 #28
det vil jeg give dig ret i, men gratis let billede redigerings program til windows som kan minske opløsningen på billeder.
Avatar billede jakobdo Ekspert
16. januar 2009 - 13:56 #29
Du kan jo prøve med følgende søgning i google - freeware image resize windows
Avatar billede hugovipper Nybegynder
16. januar 2009 - 14:31 #30
der var ingen med direkte svar på nogen spørgsmålene.

Så nu lukker jeg tråden.
Avatar billede jakobdo Ekspert
16. januar 2009 - 14:50 #31
Hvad fanden har du gang i ?
Mage til klovn.
Du har fået svar på flere spørgsmål, at du så får svaret: Det er ikke muligt, er sgu da ikke nok til du kan tage dine point selv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester