/ 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
imagecopyresized
Fra : Meyer


Dato : 08-01-07 13:33

Jeg har lidt problemer med at lave thumbs i en ordentlig
kvalitet. Jeg er ASP-mand og kender meget lidt til PHP, men fandt
denne kode til at resize et uploaded billede til 2 størrelser,
men noget går galt. Kvaliteten - specielt i det lille format - er
helt vild dårlig. Kan nogen hjælpe?

<?php
function resize($cur_dir, $cur_file, $newwidth, $output_dir)
{
$dir_name = $cur_dir;
$olddir = getcwd();
$dir = opendir($dir_name);
$filename = $cur_file;
$format='';
if(preg_match("/.jpg/i", "$filename"))
{$format = 'image/jpeg';}
if (preg_match("/.gif/i", "$filename"))
{$format = 'image/gif';}
if(preg_match("/.png/i", "$filename"))
{$format = 'image/png';}
if($format!='')
{list($width, $height) = getimagesize($filename);
$newheight=$height*$newwidth/$width;
switch($format)
{case 'image/jpeg':
$source = imagecreatefromjpeg($filename);
break;
case 'image/gif';
$source = imagecreatefromgif($filename);
break;
case 'image/png':
$source = imagecreatefrompng($filename);
break;}
$thumb = imagecreatetruecolor($newwidth,$newheight);
imagealphablending($thumb, false);
$source = @imagecreatefromjpeg("$filename");

imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth,
$newheight, $width, $height);
$filename="$output_dir/$filename";
@imagejpeg($thumb, $filename);}}

resize("./input folder",$_COOKIE["GU"] , "500", "./Middle");
resize("./input folder",$_COOKIE["GU"] , "75", "./Min");
echo" <script>
window.location=\"../MsgBilledeUpOk.asp\"
</script> ";
?>


--
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 (08-01-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 08-01-07 13:55

Meyer skrev:

> Jeg har lidt problemer med at lave thumbs i en ordentlig
> kvalitet. Jeg er ASP-mand og kender meget lidt til PHP, men fandt
> denne kode til at resize et uploaded billede til 2 størrelser,
> men noget går galt.

PHP er ikke godt til at justere billeder med. Lav det i et
grafikprogram.

Jeg lavede for nogledage siden et automatisk system til at
producere frimærker og ensrette billederne, men det blev grimt,
så jeg gik tilbage til IrfanView. Den har nogle nemme metoder til
at ordne den slags. Jeg har beskrevet det på min hjemmeside:

   http://bertel.lundhansen.dk/irfanview/irfanview.php

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

Mads Lie Jensen (08-01-2007)
Kommentar
Fra : Mads Lie Jensen


Dato : 08-01-07 14:36

On Mon, 8 Jan 2007 13:54:39 +0100, Bertel Lund Hansen
<unospamo@lundhansen.dk> wrote:

>> Jeg har lidt problemer med at lave thumbs i en ordentlig
>> kvalitet. Jeg er ASP-mand og kender meget lidt til PHP, men fandt
>> denne kode til at resize et uploaded billede til 2 størrelser,
>> men noget går galt.
>
>PHP er ikke godt til at justere billeder med. Lav det i et
>grafikprogram.

Der er nu ikke nødvendigvis noget galt med kvaliteten når php laver det
- jeg bruger da ren php på http://e-billeder.dk/
Der er det dog imagemagick-extension'en til php som bruges.
http://pottehaven.dk/ bruges jeg de indbyggede image-funktioner:
http://www.php.net/manual/en/ref.image.php

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet - http://www.gartneriet.dk/

Martin (08-01-2007)
Kommentar
Fra : Martin


Dato : 08-01-07 15:11

Bertel Lund Hansen wrote:
> Meyer skrev:
>
>
>>Jeg har lidt problemer med at lave thumbs i en ordentlig
>>kvalitet. Jeg er ASP-mand og kender meget lidt til PHP, men fandt
>>denne kode til at resize et uploaded billede til 2 størrelser,
>>men noget går galt.
>
>
> PHP er ikke godt til at justere billeder med. Lav det i et
> grafikprogram.

Forkert....
Hvis du kender GIMP (Photoshop bare til Linux) bruger PRÆCIST de samme
funktioner som PHP bruger, altså imagemagick - og det virker helt
perfekt (både i PHP og GIMP)

Problemet ligger mere i at det er svært at se resultatet på forhånd, og
selvfølgelig er det umuligt at fx klippe et ansigt ud fra et billede, da
det PHP/Computeren ikke kan se forskelle på et billede, eller jo det kan
det faktisk godt, men ret svært uden at kunne indtaste hvilken farve
ansigtet har :)

Men til at resize til diverse størrelser er PHP ganske udenmærket, men
det kræver selvfølgelig en server med imagemagick, men jeg kender
faktisk ingen der ikke har det - selv one.com har det.

> Jeg lavede for nogledage siden et automatisk system til at
> producere frimærker og ensrette billederne, men det blev grimt,
> så jeg gik tilbage til IrfanView. Den har nogle nemme metoder til
> at ordne den slags. Jeg har beskrevet det på min hjemmeside:

Så har du måske brugt de forkerte funktioner?
Selvfølgelig bliver det grimt hvis man resizer et billede fra 100x100px
til 700x700px fx.

Du kan fx. se disse
Skaleret til max 130px
<http://pointen.dk/images/items/scaled_130/1153690797_ClenchJersy-CJ3_fia676r3.jpg>
Skaleret til max 297px
<http://pointen.dk/images/items/scaled_297/1153690797_ClenchJersy-CJ3_fia676r3.jpg>
Skaleret til max 85px
<http://pointen.dk/images/items/scaled_85/1153690797_ClenchJersy-CJ3_fia676r3.jpg>
og det originale
<http://pointen.dk/images/items/original/1153690797_ClenchJersy-CJ3_fia676r3.jpg>

og jeg synes at det er ganske udenmærket resultat - nu er original
billedet heller ikke det pæneste :)

Bertel Lund Hansen (08-01-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 08-01-07 16:08

Martin skrev:

> Men til at resize til diverse størrelser er PHP ganske udenmærket, men
> det kræver selvfølgelig en server med imagemagick, men jeg kender
> faktisk ingen der ikke har det - selv one.com har det.

Det så grimmere ud efter at PHP havde lavet det, end da IrfanView
lavede det. Og det var ikke fordi jeg ville sammenligne, men det
så ikke godt ud da det var færdigt, og så prøvede jeg IrfanView i
stedet.

> Så har du måske brugt de forkerte funktioner?

Mads Lie Jensen anbefaler imagecopyresampled(), og det var den
jeg brugte.

> Selvfølgelig bliver det grimt hvis man resizer et billede fra 100x100px
> til 700x700px fx.

Min funktion havde indbygget at billederne ikke måtte forstørres.

Men du henviser til nogle frimærker, og der er problemet jo ikke
af betydning. Mit program både lavede frimærker og tilpassede de
store billeder til ens størrelse. Det sidste var ikke godt nok.

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

Martin (08-01-2007)
Kommentar
Fra : Martin


Dato : 08-01-07 17:45

Bertel Lund Hansen wrote:
> Men du henviser til nogle frimærker, og der er problemet jo ikke
> af betydning. Mit program både lavede frimærker og tilpassede de
> store billeder til ens størrelse. Det sidste var ikke godt nok.

Ingen billeder vil da være pæne hvis du ikke holder aspect ratio. Altså
uden at beskære billedet, og beskære et billede pænt kan jo gøres
maskinelt, eller jo, men sikkert aldrig med det resultat som ville være
bedst.

Men hvis jeg havde 10.000+ billeder der skulle laves thumbs af, så ved
jeg absolut godt hvilken metode jeg ville bruge.

Bertel Lund Hansen (08-01-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 08-01-07 17:49

Martin skrev:

> Ingen billeder vil da være pæne hvis du ikke holder aspect ratio.

Det er tilladt at formode at jeg ikke er tumbe.

> Men hvis jeg havde 10.000+ billeder der skulle laves thumbs af, så ved
> jeg absolut godt hvilken metode jeg ville bruge.

Det ved jeg også. IrfanView gør det helt automatisk noget
hurtigere end PHP kan klare.

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

Martin (08-01-2007)
Kommentar
Fra : Martin


Dato : 08-01-07 17:53

Bertel Lund Hansen wrote:
> Det er tilladt at formode at jeg ikke er tumbe.

Ingen er tumber før andet er bevidst :D

>
>
>>Men hvis jeg havde 10.000+ billeder der skulle laves thumbs af, så ved
>>jeg absolut godt hvilken metode jeg ville bruge.
>
>
> Det ved jeg også. IrfanView gør det helt automatisk noget
> hurtigere end PHP kan klare.

Sikker?
PHP - upload source filen, og tryk på php filen - bummelum så er det klaret.

IrfanView - lav alle sourcer til thumbnails, upload sourcefilen OG
thumbnailen.

Jeg gætter på det tager stortset ligeså langtid. Hvis man selvfølgelig
kører på et webhotel hvor det tager lidt tid at uploade filer.

Bertel Lund Hansen (08-01-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 08-01-07 18:07

Martin skrev:

> PHP - upload source filen, og tryk på php filen - bummelum så er det klaret.

Sourcefilerne fylder 450 MB. De nedskalerede billeder fylder
under 85 MB og frimærkerne 'ingenting'.

Derudover er der på mit webhotel sat en maksimumgrænse for hvor
længe PHP må arbejde, så den timede ud for hver 30 sekunder under
arbejdet.

> Jeg gætter på det tager stortset ligeså langtid.

Du gætter forkert.

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

Martin (08-01-2007)
Kommentar
Fra : Martin


Dato : 08-01-07 18:23

Bertel Lund Hansen wrote:
> Martin skrev:
>
>
>>PHP - upload source filen, og tryk på php filen - bummelum så er det klaret.
>
>
> Sourcefilerne fylder 450 MB. De nedskalerede billeder fylder
> under 85 MB og frimærkerne 'ingenting'.
>
> Derudover er der på mit webhotel sat en maksimumgrænse for hvor
> længe PHP må arbejde, så den timede ud for hver 30 sekunder under
> arbejdet.

ini_set('MAX_EXECUTION_TIME',300);
Nu er den 300 sekunder...

>
>
>>Jeg gætter på det tager stortset ligeså langtid.
>
>
> Du gætter forkert.

Sikker?

Bertel Lund Hansen (08-01-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 08-01-07 19:13

Martin skrev:

> Sikker?

450 MB/48KB/s =~ 9'000 sekunder = 2,5 timer.

85 MB/48KB/s =~ 2'000 sekunder = 0,6 timer.

Rimeligt sikker.

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

Martin (09-01-2007)
Kommentar
Fra : Martin


Dato : 09-01-07 13:33

Bertel Lund Hansen wrote:
> Martin skrev:
>
>
>>Sikker?
>
>
> 450 MB/48KB/s =~ 9'000 sekunder = 2,5 timer.
>
> 85 MB/48KB/s =~ 2'000 sekunder = 0,6 timer.

Nu havde jeg også regnet med at det originale billede også skulle uploades.

Altså ved irfanview 450+85 mb
Ved PHP kun 450mb ;)

Bertel Lund Hansen (09-01-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 09-01-07 14:45

Martin skrev:

> Nu havde jeg også regnet med at det originale billede også
> skulle uploades.

Men det skulle det altså ikke. Hvis det kun havde drejet sig om
frimærkerne, så havde kvaliteten ikke været noget synderligt
problem

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

Arne Feldborg (09-01-2007)
Kommentar
Fra : Arne Feldborg


Dato : 09-01-07 17:08

Bertel Lund Hansen <unospamo@lundhansen.dk> skrev Tue, 9 Jan 2007
14:45:07 +0100

>Martin skrev:
>
>> Nu havde jeg også regnet med at det originale billede også
>> skulle uploades.
>
>Men det skulle det altså ikke.
>
Det fremgår det da ellers af det oprindelige spørgsmål at det skulle de
(eller allerede var).

Det du måler er jo transmissionstiden ikke behandlingstiden.

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Jesper Brunholm (08-01-2007)
Kommentar
Fra : Jesper Brunholm


Dato : 08-01-07 17:42

Bertel Lund Hansen skrev:
> Meyer skrev:
>
>> Jeg har lidt problemer med at lave thumbs i en ordentlig
>> kvalitet. Jeg er ASP-mand og kender meget lidt til PHP, men fandt
>> denne kode til at resize et uploaded billede til 2 størrelser,
>> men noget går galt.
>
> PHP er ikke godt til at justere billeder med. Lav det i et
> grafikprogram.

Det er jeg ikke enig i - ImageCopyResample med GD2 giver ret gode
resultater efter min erfaring, billederne på Phønix' website:
<http://www.phonixfolk.dk/galleri.php> er alle skalerede med det værktøj
(ikke med imagemagick), og det eneste jeg vil sige er at det kun skal
reducere, ikke forstørre, og at man kan optimere billedstørrelsen bedre
med et grafikprogram.

Mvh

Jesper Brunholm

Martin (08-01-2007)
Kommentar
Fra : Martin


Dato : 08-01-07 17:49

Jesper Brunholm wrote:
> Det er jeg ikke enig i - ImageCopyResample med GD2 giver ret gode
> resultater efter min erfaring, billederne på Phønix' website:
> <http://www.phonixfolk.dk/galleri.php> er alle skalerede med det værktøj
> (ikke med imagemagick), og det eneste jeg vil sige er at det kun skal
> reducere, ikke forstørre, og at man kan optimere billedstørrelsen bedre
> med et grafikprogram.

Det er altid "nemt" at skalere et billede ned, der tror jeg næsten paint
er ligeså godt. (overdrivelse fremmer forståelsen :)

Problemet ligger mest i når man også skal skalere op, så mener jeg ikke
GD2 gør arbejdet særlig pænt - men her gør imagemagick det bedre.

Selvfølgelig er et billedeprogram altid meget bedre, da man har fuld
kontrol over alt - men luk øjenene og se om PHP eller et billedeprogram
gør det bedst :)

Mads Lie Jensen (08-01-2007)
Kommentar
Fra : Mads Lie Jensen


Dato : 08-01-07 14:39

On 08 Jan 2007 12:33:21 GMT, Meyer <troels@s-meyer.dk> wrote:

>Jeg har lidt problemer med at lave thumbs i en ordentlig
>kvalitet. Jeg er ASP-mand og kender meget lidt til PHP, men fandt
>denne kode til at resize et uploaded billede til 2 størrelser,
>men noget går galt. Kvaliteten - specielt i det lille format - er
>helt vild dårlig. Kan nogen hjælpe?
>
><?php
<klip>
> imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth,
>$newheight, $width, $height);

Brug imagecopyresampled() i stedet for imagecopyresized() her.
http://www.php.net/manual/en/function.imagecopyresampled.php
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet - http://www.gartneriet.dk/

Meyer (08-01-2007)
Kommentar
Fra : Meyer


Dato : 08-01-07 14:54

Mads Lie Jensen wrote in dk.edb.internet.webdesign.serverside.php:
> On 08 Jan 2007 12:33:21 GMT, Meyer <troels@s-meyer.dk> wrote:
>
> > imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth,
> >$newheight, $width, $height);
>
> Brug imagecopyresampled() i stedet for imagecopyresized() her.
> http://www.php.net/manual/en/function.imagecopyresampled.php
> --
Tak for hjælpen - det var præcis det jeg ledte efter :)

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

Nezar Nielsen (08-01-2007)
Kommentar
Fra : Nezar Nielsen


Dato : 08-01-07 17:06

Mads Lie Jensen wrote:
> Brug imagecopyresampled() i stedet for imagecopyresized() her.
> http://www.php.net/manual/en/function.imagecopyresampled.php

Eller endda imagecopyresampledbicubic, som bibeholder lidt større
detaljeringsgrad, jeg tror funktionen står postet i en kommentar på
enten imagecopyresized eller imagecopyresampled manualsiden, ellers kan
den også ses her (incl. resizede billeder, hvor man kan se forskellen
mellem de 3 typer)

http://control.dk/eksempler/imageresizing/

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

Kim Schulz (08-01-2007)
Kommentar
Fra : Kim Schulz


Dato : 08-01-07 16:07

On Mon, 08 Jan 2007 15:10:56 +0100
Martin <maa@scandesigns.dk> wrote:

> Forkert....
> Hvis du kender GIMP (Photoshop bare til Linux) bruger PRÆCIST de
> samme funktioner som PHP bruger, altså imagemagick - og det virker
> helt perfekt (både i PHP og GIMP)

Forkert! PHP bruger kun ImageMagick hvis du har disse bindinger
kompileret ind - dette er ikke default!
Det som normalt bruges er GD lib som er noget mere primitivt en
ImageMagick.
http://dk2.php.net/manual/da/ref.image.php
Ønsker du at bruge imagemagick fra php, så er der 2 måder. Den ene er
via ImageMagick extensionen MagickWand:
http://www.magickwand.org/
Den anden måde er via en klasse eller lignende som benytter imagemagick
programmet via system kald:
http://www.bokko.nl/projects/php-imagemagick-class/

Gimp bruger forresten heller ikke Image Magick, men derimod deres helt
egne funktioner til formålet. GEGL er bl.a. en af de underliggende libs
som Gimp bruger til formålet: www.gegl.org

> Problemet ligger mere i at det er svært at se resultatet på forhånd,
> og selvfølgelig er det umuligt at fx klippe et ansigt ud fra et
> billede, da det PHP/Computeren ikke kan se forskelle på et billede,
> eller jo det kan det faktisk godt, men ret svært uden at kunne
> indtaste hvilken farve ansigtet har :)

Der er nu lavet mange online billedebehandling sites hvor du kan klippe
i billeder og meget andet. De fleste bruge noget javascript til at
fortælle php hvilket område at brugeren ønsker at klippe ud.


> Men til at resize til diverse størrelser er PHP ganske udenmærket,
> men det kræver selvfølgelig en server med imagemagick, men jeg kender
> faktisk ingen der ikke har det - selv one.com har det.

Det er nu ikke korrekt. De fleste har GD lib, men næsten ingen har
MagickWand.



--
Kim Schulz | Private : http://www.schulz.dk
Kim@schulz.dk | Business: http://www.devteam.dk
+45 5190 4262 | Sparetime: http://www.fundanemt.com

Arne Feldborg (08-01-2007)
Kommentar
Fra : Arne Feldborg


Dato : 08-01-07 18:51

Kim Schulz <kim@schulz.dk> skrev Mon, 8 Jan 2007 16:07:15 +0100


>> Forkert....
>> Hvis du kender GIMP (Photoshop bare til Linux) bruger PRÆCIST de
>> samme funktioner som PHP bruger, altså imagemagick - og det virker
>> helt perfekt (både i PHP og GIMP)
>
>Forkert! PHP bruger kun ImageMagick hvis du har disse bindinger
>kompileret ind
>
Også forkert.

Man kan sagtens bruge ImageMagic som kommandolinieværktøj fra PHP.

Og iøvrigt er jeg enig i, at såvel GdLid som Imagemagic er fuldt på
højde med primitive billedbehandlingsprogrammer som feks IrfranView.

ImageMagic enddog væsentlig bedre og med langt flere muligheder.


>Det er nu ikke korrekt. De fleste har GD lib, men næsten ingen har
>MagickWand.
>
Og.?

De fleste har ImageMagic, og man behøver ikke MagicWand for at bruge
ImageMagic.

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

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

Månedens bedste
Årets bedste
Sidste års bedste