/ 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
Store billeder med ImageCreateFromjpeg
Fra : Mikkel Jakobsen


Dato : 11-09-07 19:26

Jeg lavet et billede med 'ImageCreateFromjpeg'. Det originale
billede fylder ca 48Kb, det mener jeg er akseptabel for visning
af billeder på en hjemmeside.

Men når jeg kører billedet igennem nedenstående kode, fylder det
pludselig 446 Kb. Hvor kommer de sidste ca 400 Kb fra. og
hvordan kan jeg undgå dem... hvis heg kan.

Den eneste grund til at jeg kører billedet igennem koden, er at
jeg tilføjer noget tekst på billedet. Teksten kan jeg selv ændre
via mysql

Kode:

billede.php

$im    = ImageCreateFromjpeg ("billede.jpg");
$sort    = ImageColorAllocate($im,0,0,0);          ImageTTFText
($im,14,0,2,15,$sort,"courbd.ttf",$billede_tekst);


header("Content-type: image/jpeg")
ImagePNG($im);                         ImageDestroy($im);                                  

--
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

 
 
Rander (11-09-2007)
Kommentar
Fra : Rander


Dato : 11-09-07 19:35

Mikkel Jakobsen skrev noget i denne stil, den 11-09-2007 20:26:
> header("Content-type: image/jpeg")
> ImagePNG($im);                         ImageDestroy($im);                                  

Er der en speciel grund til at du sender en JPEG-header og billedet som PNG?

--
Lars Rander ** Pil ikke ved min adresse ** :(){ :&:& };:
http://rander.dk

Man kan næsten altid rubricere den intellektuelle gruppe, hvortil
citatelskeren tilhører,
ved at lægge mærke til de ulæste forfattere, han vælger at citere.
(Russell Baker)

Mikkel Jakobsen (11-09-2007)
Kommentar
Fra : Mikkel Jakobsen


Dato : 11-09-07 19:38




> > header("Content-type: image/jpeg")
> > ImagePNG($im);                         ImageDestroy($im);                                  
>
> Er der en speciel grund til at du sender en JPEG-header og billedet som PNG?
>

Nej... er bare ikke sikker på hvordan man gør når det er et jpeg billede.


--
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

Mikkel Jakobsen (11-09-2007)
Kommentar
Fra : Mikkel Jakobsen


Dato : 11-09-07 19:57

ups....

Jeg tror du har ret..

imagejpeg($im); giver meget mindre billeder....

Kan du så også sige mig hvordan man bruger 'Quality' egenskaben med
imagejpeg(),

jeg kan ikke helt forstå det de skriver på www.php.net/imagejpeg

Mikkel

--
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

Rander (12-09-2007)
Kommentar
Fra : Rander


Dato : 12-09-07 13:30

Mikkel Jakobsen skrev noget i denne stil, den 11-09-2007 20:56:
> Jeg tror du har ret..
> imagejpeg($im); giver meget mindre billeder....
> Kan du så også sige mig hvordan man bruger 'Quality' egenskaben med
> imagejpeg(),
> jeg kan ikke helt forstå det de skriver på www.php.net/imagejpeg

imagejpeg($im, '', 80);

80 er i dette tilfælde kvaliteten - jo højere tal, jo højere kvalitet
(og større fil).

--
Lars Rander ** Pil ikke ved min adresse ** :(){ :&:& };:
http://rander.dk

Kun idioter ændrer sig aldrig. (Georges Pompidou)

ShutEye (13-09-2007)
Kommentar
Fra : ShutEye


Dato : 13-09-07 08:56

> imagejpeg($im, '', 80);
>
> 80 er i dette tilfælde kvaliteten - jo højere tal, jo højere kvalitet (og
> større fil).

Yep, og min erfaring siger at det ikke kan betale sig at gå over 80.
Billederne bliver for store uden egentlig gevinst i billedkvalitet.



ShutEye (13-09-2007)
Kommentar
Fra : ShutEye


Dato : 13-09-07 09:23

>> imagejpeg($im, '', 80);
>>
>> 80 er i dette tilfælde kvaliteten - jo højere tal, jo højere kvalitet (og
>> større fil).
>
> Yep, og min erfaring siger at det ikke kan betale sig at gå over 80.
> Billederne bliver for store uden egentlig gevinst i billedkvalitet.

Den korrekte syntax er forresten: imagejpeg($im,NULL,80); hvis du vil smide
billedet til browseren.



Martin Højriis Krist~ (13-09-2007)
Kommentar
Fra : Martin Højriis Krist~


Dato : 13-09-07 20:53

"ShutEye" <no@no.no> skrev i en meddelelse
news:fcaqek$11a$1@news.datemas.de...
> Yep, og min erfaring siger at det ikke kan betale sig at gå over 80.

Det afhænger en del af billedets indhold. Tekst på store flader, som fx
tegninger, giver hurtigt artefakter ved kvalitet 80.

Sammenlign fx:
http://www.martinshjemmeside.dk/billeder/aarhusplaner/lisbjergdisposition.jpg?mw=600&q=100
http://www.martinshjemmeside.dk/billeder/aarhusplaner/lisbjergdisposition.jpg?mw=600&q=80

Scriptet bruger ligeledes imagejpeg()

--
Martin Højriis Kristensen
http://www.martinshjemmeside.dk/ - Lidt af hvert
http://www.mestomaarhus.dk/ - Mest om Århus



ShutEye (14-09-2007)
Kommentar
Fra : ShutEye


Dato : 14-09-07 01:56

>> Yep, og min erfaring siger at det ikke kan betale sig at gå over 80.
>
> Det afhænger en del af billedets indhold. Tekst på store flader, som fx
> tegninger, giver hurtigt artefakter ved kvalitet 80.
>
> Sammenlign fx:
> http://www.martinshjemmeside.dk/billeder/aarhusplaner/lisbjergdisposition.jpg?mw=600&q=100
> http://www.martinshjemmeside.dk/billeder/aarhusplaner/lisbjergdisposition.jpg?mw=600&q=80
>
> Scriptet bruger ligeledes imagejpeg()

Q80 er på ~46kByte og Q100 er på ~168kByte - det er næsten en 4-dobling af
data brugeren skal hente.
Kig her: http://www.ebrueggeman.com/article_php_image_optimization.php
Fin lille skala :)
Ikke fordi jeg er uenig i hvad der SER bedst ud.
Det er bare ikke alle brugere/servere der har båndbredden til at benytte
denne luksus der hedder ,100 :)

mvh

Ole



Birger (11-09-2007)
Kommentar
Fra : Birger


Dato : 11-09-07 21:51

"Mikkel Jakobsen" <spam@bonzai.adsl.dk> skrev i en meddelelse
news:46e6ddd0$0$90264$14726298@news.sunsite.dk...
> Jeg lavet et billede med 'ImageCreateFromjpeg'. Det originale
> billede fylder ca 48Kb, det mener jeg er akseptabel for visning
> af billeder på en hjemmeside.
>
> Men når jeg kører billedet igennem nedenstående kode, fylder det
> pludselig 446 Kb. Hvor kommer de sidste ca 400 Kb fra. og
> hvordan kan jeg undgå dem... hvis heg kan.
>
> Den eneste grund til at jeg kører billedet igennem koden, er at
> jeg tilføjer noget tekst på billedet. Teksten kan jeg selv ændre
> via mysql
>
> Kode:
>
> billede.php
>
> $im = ImageCreateFromjpeg ("billede.jpg");
> $sort = ImageColorAllocate($im,0,0,0); ImageTTFText
> ($im,14,0,2,15,$sort,"courbd.ttf",$billede_tekst);
>
>
> header("Content-type: image/jpeg")
> ImagePNG($im); ImageDestroy($im);
>
> --

Uden i øvrigt at kommentere din kode, så er jpg et komprimeret format.
Nogle af php's billedfunktioner, opretter billedet i bmp format - og sådan
et fylder højde x bredde x farvedybde.
Så kan du selv regne ud hvor store dine billeder bliver...

Birger



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

Månedens bedste
Årets bedste
Sidste års bedste