/ 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
Ændre størelse på gif animation.
Fra : Run


Dato : 08-02-05 15:23

Hej NG,

Jeg er igang med at lave en funktion der skal kunne ændre størrelsen på
følgende billede formater; jpg, png og gif. Dette virker også
upåklageligt men jeg vil også gerne have muligheden for at ændre
størrelsen på en gif animation. Er det muligt? Og hvordan?


/run

Herunder er min resize funktion.

function resizeImage($sourceFile, $targetFile, $maxWidth, $maxHeight){
   
   list($sourceImageWidth, $sourceImageHeight, $fileType) =
getimagesize($sourceFile);
   
   if ($sourceImageWidth > $maxWidth){
      $delta = $maxWidth/$sourceImageWidth;
      if (($sourceImageHeight * $delta) > $maxHeight) $delta =
$maxHeight/$sourceImageHeight;
   } elseif ($sourceImageHeight > $maxHeight) $delta =
$maxHeight/$sourceImageHeight;
   
   if (isset($delta)){
      $destImageWidth = round($delta * $sourceImageWidth);
      $destImageHeight = round($delta * $sourceImageHeight);
   } else {
      $destImageWidth = $sourceImageWidth;
      $destImageHeight = $sourceImageHeight;
   }
   
   $targetImage = imagecreatetruecolor($destImageWidth, $destImageHeight);
   
   switch($fileType){
      
      case ($fileType == 1):
         $sourceImage = imagecreatefromgif($sourceFile);
         imagecopyresampled($targetImage, $sourceImage, 0,0,0,0,
$destImageWidth, $destImageHeight, $sourceImageWidth, $sourceImageHeight);
      imagegif($targetImage,$targetFile,100);
         break;
      
      case ($fileType == 2):
         $sourceImage = imagecreatefromjpeg($sourceFile);
         imagecopyresampled($targetImage, $sourceImage, 0,0,0,0,
$destImageWidth, $destImageHeight, $sourceImageWidth, $sourceImageHeight);
      imagejpeg($targetImage,$targetFile,100);
         break;
         
      case ($fileType == 3):
         $sourceImage = imagecreatefrompng($sourceFile);
         imagecopyresampled($targetImage, $sourceImage, 0,0,0,0,
$destImageWidth, $destImageHeight, $sourceImageWidth, $sourceImageHeight);
      imagepng($targetImage,$targetFile,100);
         break;         
   }
}

 
 
Dan Storm (08-02-2005)
Kommentar
Fra : Dan Storm


Dato : 08-02-05 17:33

>Jeg er igang med at lave en funktion der skal kunne ændre størrelsen
på følgende billede formater; jpg, png og gif. Dette virker også
upåklageligt men jeg vil også gerne have muligheden for at ændre
størrelsen på en gif animation. Er det muligt? Og hvordan?

Nej. Det svarer til at du tager din animation ind i f.eks. PSP, og
tilpasser størrelsen. Så sker der det at animationens første frame
bliver gemt som et nyt GIF billede.

Vær opmærksom på at hvis du vil benytte dig af GDlibs GIF funktioner
skal GD være yngre end version 2, da GIF er et trademark af et
amerikansk firma og dermed ikke følger med nyere versioner af GDlib.
--
Dan Storm

http://err0r.dk
storm@err0r.dk

PGP Public key på http://err0r.dk/pubring.pkr

>>> husk på; en ekspert er en person der har begået alle fejl mulige
inden for et bestemt område

Geert Lund (08-02-2005)
Kommentar
Fra : Geert Lund


Dato : 08-02-05 17:55

Dan Storm wrote:

> Vær opmærksom på at hvis du vil benytte dig af GDlibs GIF funktioner
> skal GD være yngre end version 2, da GIF er et trademark af et
> amerikansk firma og dermed ikke følger med nyere versioner af GDlib.

Ikke at jeg er sikker i min sag, da jeg ikke selv bruger det, men er GIF
support ikke tilbage i GDLib? Eller rettere - jeg ved at det er tilbage
[fra version 2.0.28/21-07-2004], spørgsmålet er mere om ikke også PHP
dermed understøtter GIF hvis man bruger en ny version af GDLib?

--
Med venlig hilsen
Geert Lund

Morten Fangel (08-02-2005)
Kommentar
Fra : Morten Fangel


Dato : 08-02-05 18:00

Geert Lund wrote:
> Dan Storm wrote:
>
>> Vær opmærksom på at hvis du vil benytte dig af GDlibs GIF funktioner
>> skal GD være yngre end version 2, da GIF er et trademark af et
>> amerikansk firma og dermed ikke følger med nyere versioner af GDlib.
>
>
> Ikke at jeg er sikker i min sag, da jeg ikke selv bruger det, men er GIF
> support ikke tilbage i GDLib? Eller rettere - jeg ved at det er tilbage
> [fra version 2.0.28/21-07-2004], spørgsmålet er mere om ikke også PHP
> dermed understøtter GIF hvis man bruger en ny version af GDLib?
>
Gif-support er tilbage i Read-Only mode... dvs at du kan indlæse et
Gif-billede, resize det og gemme det igen som et PNG-billede..

http://burnallgifs.org/archives/

Patentet udløb dog muligvis i 2004, så måske vi ser Gif-read-support
tilbage i GDlib på et tidspunkt - hvem ved?

Fangel

Ulrik Nielsen (08-02-2005)
Kommentar
Fra : Ulrik Nielsen


Dato : 08-02-05 18:13

Morten Fangel wrote:
> Gif-support er tilbage i Read-Only mode... dvs at du kan indlæse et
> Gif-billede, resize det og gemme det igen som et PNG-billede..
>
> http://burnallgifs.org/archives/
>
> Patentet udløb dog muligvis i 2004, så måske vi ser Gif-read-support
> tilbage i GDlib på et tidspunkt - hvem ved?

hmm, der er nu altså rw understøttelse i gif igen, patentet er udløbet
og en ny version af gdlib m. gif support er frigivet...


--
ulrik nielsen |
-----------------+---------------------------------------------------
quote or the day | routing problems on the neural net
from bofh | http://www.cs.wisc.edu/~ballard/bofh/

Geert Lund (08-02-2005)
Kommentar
Fra : Geert Lund


Dato : 08-02-05 18:51

Morten Fangel wrote:

> Gif-support er tilbage i Read-Only mode... dvs at du kan indlæse et
> Gif-billede, resize det og gemme det igen som et PNG-billede..

Og lige en note mere

Kan faktisk se på min egen PHP Build med GD 2.0.28 support at der er
både Read og Create GIF support enablet, så jeg tror bestemt ikke det er
noget problem :)

--
Med venlig hilsen
Geert Lund

Run (08-02-2005)
Kommentar
Fra : Run


Dato : 08-02-05 20:39

Dan Storm wrote:
> >Jeg er igang med at lave en funktion der skal kunne ændre størrelsen
> på følgende billede formater; jpg, png og gif. Dette virker også
> upåklageligt men jeg vil også gerne have muligheden for at ændre
> størrelsen på en gif animation. Er det muligt? Og hvordan?
>
> Nej. Det svarer til at du tager din animation ind i f.eks. PSP, og
> tilpasser størrelsen. Så sker der det at animationens første frame
> bliver gemt som et nyt GIF billede.
>
> Vær opmærksom på at hvis du vil benytte dig af GDlibs GIF funktioner
> skal GD være yngre end version 2, da GIF er et trademark af et
> amerikansk firma og dermed ikke følger med nyere versioner af GDlib.

Tak for hjælpen. Men er der så en funktion der kan kontroller om en gif
fil er en animation eller et billede?

/run

Dan Storm (08-02-2005)
Kommentar
Fra : Dan Storm


Dato : 08-02-05 23:18

Heller ikke. Det må være noget du skal overlade til gætteri i form af
filens størrele så. Jo større filen er i kb, eventuelt flere frames.
Sammenlign det eventuelt med width og height af billedet.
--
Dan Storm

http://err0r.dk
storm@err0r.dk

PGP Public key på http://err0r.dk/pubring.pkr

>>> husk på; en ekspert er en person der har begået alle fejl mulige
inden for et bestemt område

Thomas Lindgaard (09-02-2005)
Kommentar
Fra : Thomas Lindgaard


Dato : 09-02-05 11:24

On Tue, 08 Feb 2005 23:17:46 +0100, Dan Storm wrote:

> Heller ikke. Det må være noget du skal overlade til gætteri i form af
> filens størrele så. Jo større filen er i kb, eventuelt flere frames.
> Sammenlign det eventuelt med width og height af billedet.

Kunne man ikke evt. gemme en kopi af billedet og sammenligne størrelsen
med originalen? - hvis de er samme størrelse, er det ikke en animation
ellers...

--
Mvh.
/Thomas


Dan Storm (09-02-2005)
Kommentar
Fra : Dan Storm


Dato : 09-02-05 15:39

Det er også en mulighed! Det handler om at lave en logisk sammenligning
af billederne!
--
Dan Storm

http://err0r.dk
storm@err0r.dk

PGP Public key på http://err0r.dk/pubring.pkr

>>> husk på; en ekspert er en person der har begået alle fejl mulige
inden for et bestemt område

Run (10-02-2005)
Kommentar
Fra : Run


Dato : 10-02-05 13:30

Dan Storm wrote:
> Det er også en mulighed! Det handler om at lave en logisk sammenligning
> af billederne!

Tak for svarene. Jeg må prøve mig lidt frem med de metoder i har givet
og bruge den jeg finder bedst.

Igen tak for hjælpen.

/run

Allan Kok (11-02-2005)
Kommentar
Fra : Allan Kok


Dato : 11-02-05 17:33


"Run" <newsrunnerrun@yahoo.com> skrev i en meddelelse
news:Yy8Od.98545$Vf.3872347@news000.worldonline.dk...
> Tak for hjælpen. Men er der så en funktion der kan kontroller om en gif
> fil er en animation eller et billede?

Man må kunne ud fra headeren i billedet se om det er en animation!

mvh
Allan



Run (12-02-2005)
Kommentar
Fra : Run


Dato : 12-02-05 01:13

Allan Kok wrote:
>
> Man må kunne ud fra headeren i billedet se om det er en animation!
>
> mvh
> Allan
>
>

Men hvordan gøres det?

/run

Allan Kok (12-02-2005)
Kommentar
Fra : Allan Kok


Dato : 12-02-05 12:34


"Run" <newsrunnerrun@yahoo.com> skrev i en meddelelse
news:XRbPd.99345$Vf.3880548@news000.worldonline.dk...
> Allan Kok wrote:
>>
>> Man må kunne ud fra headeren i billedet se om det er en animation!
>>
>> mvh
>> Allan
>
> Men hvordan gøres det?
>
Det kan jeg ikke svare på, men det må kunne ses i standarten!

Men på GD Graphics Library (http://www.boutell.com/gd/) står følgende:

11/01/04: gd 2.0.32 has been released. gd 2.0.29 added animated GIF writing
support, fontconfig support for easily specifying freetype font names, open
polygon drawing, and important fixes for theoretically exploitable integer
overflows in memory allocation code in previous releases. 2.0.30 corrected a
minor compilation problem when freetype is absent, and 2.0.31 corrected a
similar issue which prevented the Windows DLL version from being built.
2.0.32 corrected an issue when PNG is absent and also corrected a problem
with umlauts in truetype text output.

så GD må jo kunne håndere animerede giffer!

Allan



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

Månedens bedste
Årets bedste
Sidste års bedste