/ 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
GD2, store billeder og memory-limit?
Fra : Frank K. Jensen


Dato : 04-10-03 11:28

Hejsa

Jeg har lavet et webgalleri i php, hvor jeg bruger GD2. Ideen med scriptet
er, at man bare skal have sine billeder liggende i en mappestryktur i
højeste opløsning, og så laver scriptet alt andet "on-the-fly". Det gemmer
thumbnails'ene når de først er lavet, så de ikke skal laves hver gang, men
når man vil se et enkelt billede i en anden opløsning, så skal det skalerer
billedet på serveren, og derefter sende det til browseren uden at gemme det
på serveren, så man ikke skal bruge plads på at have alle billederne
liggende i flere opløsninger.

Det gik fint med GD1, hvor man ikke kunne bruge true color, men med GD2 og
true color fylder billederne jo noget mere (3x), og derfor har jeg fået
problemmer med memory-limit som er sat til 8 Mb som default (nej, jeg har
ikke min egen server, jeg bruger webhotel).

Hvad gør jeg for at komme ud over problemmet? Er der andre værktøjer jeg kan
bruge, som ikke kræver så meget hukommelse? Alle ideer er velkomne.

mvh Frank


Nedenfor er et lille klip fra scriptet: Først laver det et billede fra jpeg
filen og gemmer det i $src. Dette sker vel i 24 bit bitmap, så her bruger
det en del hukommelse. Derefter laver det et tomt billede $dst, som nok også
er 24 bit bitmap, dette fylder også en del, med det afhænger selvfølgelig af
den ønskede opløsning. Så skalerer det billedet $src og kopiere det over i
det tomme billede $dst. Dette koster jo nok også noget hukommelse, og til
sidst laver det en jpeg fil fra $dst. Alt i alt bruger det jo en hel del
hukommelse.
-----
$src = imagecreatefromjpeg("$dir$pic");
$dst = ImageCreateTrueColor($width, $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $xs, $ys);
imagejpeg($dst);
-----



 
 
Nezar Nielsen (06-10-2003)
Kommentar
Fra : Nezar Nielsen


Dato : 06-10-03 09:52

Frank K. Jensen wrote:
....
> Det gik fint med GD1, hvor man ikke kunne bruge true color, men med GD2 og
> true color fylder billederne jo noget mere (3x), og derfor har jeg fået
> problemmer med memory-limit som er sat til 8 Mb som default (nej, jeg har
> ikke min egen server, jeg bruger webhotel).
>
> Hvad gør jeg for at komme ud over problemmet? Er der andre værktøjer jeg kan
> bruge, som ikke kræver så meget hukommelse? Alle ideer er velkomne.

Hvis du piller med meget store billeder er der vist ikke så meget andet
at gøre end enten
1) sørg for at du max uploader billeder i 1600x1200 (burde der være
"plads til" på de 8 mb, så længe du resizer til mindre størrelser)

2) få din udbyder til at sætte memory-limit op eller

3) brug et kommandolinieværktøj til at resize med - der er en chance for
at fx. imagemagick's 'convert' værktøj er installeret på din server..

--
Mvh. Nezar Nielsen
http://fez.dk


Frank K. Jensen (06-10-2003)
Kommentar
Fra : Frank K. Jensen


Dato : 06-10-03 10:36

"Nezar Nielsen" <tumpen@fez.dk> wrote in message
news:blraf5$el797$1@ID-179598.news.uni-berlin.de...
> Frank K. Jensen wrote:
> ...
> > Det gik fint med GD1, hvor man ikke kunne bruge true color, men med GD2
og
> > true color fylder billederne jo noget mere (3x), og derfor har jeg fået
> > problemmer med memory-limit som er sat til 8 Mb som default (nej, jeg
har
> > ikke min egen server, jeg bruger webhotel).
> >
> > Hvad gør jeg for at komme ud over problemmet? Er der andre værktøjer jeg
kan
> > bruge, som ikke kræver så meget hukommelse? Alle ideer er velkomne.
>
> Hvis du piller med meget store billeder er der vist ikke så meget andet
> at gøre end enten
> 1) sørg for at du max uploader billeder i 1600x1200 (burde der være
> "plads til" på de 8 mb, så længe du resizer til mindre størrelser)

Jeg har prøvet 1600x1200, og det virker stadig ikke. Der er nok også noget
andet der bruger hukommelse.

> 2) få din udbyder til at sætte memory-limit op eller

Har jeg spurgt om, og det synes de ikke var en god ide

> 3) brug et kommandolinieværktøj til at resize med - der er en chance for
> at fx. imagemagick's 'convert' værktøj er installeret på din server..

Ja, det har jeg også tænkt på, men hvis det nu ikke er installeret, kan man
så ligge det lokalt?

mvh Frank



Nezar Nielsen (06-10-2003)
Kommentar
Fra : Nezar Nielsen


Dato : 06-10-03 11:05

Frank K. Jensen wrote:
>>3) brug et kommandolinieværktøj til at resize med - der er en chance for
>>at fx. imagemagick's 'convert' værktøj er installeret på din server..
>
>
> Ja, det har jeg også tænkt på, men hvis det nu ikke er installeret, kan man
> så ligge det lokalt?

Såfremt du ikke lider under safe-mode burde du kunne.
Det kræver nok nogle libraries hvis det ikke er installeret, selvom du
kopierer selve programmet ind, men det er nok lettest at finde ud af ved
at prøve :)
Ellers kan du prøve netpbm, det er såvidt jeg husker lidt mindre
afhængigt af alt muligt (til gengæld skal man lave lidt mere eksotiske
kald (først jpg->pbm og så resize og så pbm->jpg eller sådan noget) for
at resize en fil)..

--
Mvh. Nezar Nielsen
http://fez.dk



Frank K. Jensen (07-10-2003)
Kommentar
Fra : Frank K. Jensen


Dato : 07-10-03 14:34

"Nezar Nielsen" <tumpen@fez.dk> wrote in message
news:blrenr$civ7j$1@ID-179598.news.uni-berlin.de...
> Frank K. Jensen wrote:
> >>3) brug et kommandolinieværktøj til at resize med - der er en chance
for
> >>at fx. imagemagick's 'convert' værktøj er installeret på din server..
> >
> >
> > Ja, det har jeg også tænkt på, men hvis det nu ikke er installeret, kan
man
> > så ligge det lokalt?
>
> Såfremt du ikke lider under safe-mode burde du kunne.
> Det kræver nok nogle libraries hvis det ikke er installeret, selvom du
> kopierer selve programmet ind, men det er nok lettest at finde ud af ved
> at prøve :)
> Ellers kan du prøve netpbm, det er såvidt jeg husker lidt mindre
> afhængigt af alt muligt (til gengæld skal man lave lidt mere eksotiske
> kald (først jpg->pbm og så resize og så pbm->jpg eller sådan noget) for
> at resize en fil)..

Ok, jeg vil se på det, tak.

mvh Frank



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste