/ 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
GD-lib - bestemt størrelse på billede
Fra : Sinkbæk


Dato : 18-02-03 01:16

Hej!

Jeg bruger GD-lib til at skalere uploadede billeder. Her har jeg med
nedenstående kode fastsat bredden og så regnet mig til højden.
<?
$prop = $w / $h;
$new_w = 143;
$new_h = $new_w / $prop;
$dst_img = imagecreatetruecolor($new_w,$new_h);
?>
Men nu har jeg så fået brug for at kunne lave et billede til en helt bestemt
størrelse - dvs. fast højde og bredde - uden at ændre proportioner.

Er det muligt at skære en del af billedet ud? Dvs. noget med at croppe
billedet ned til en fastsat størrelse?

--
Med venlig hilsen
Thomas Sinkbæk
www.sinkbaek.com



 
 
Dan Molberg (18-02-2003)
Kommentar
Fra : Dan Molberg


Dato : 18-02-03 12:30

"Sinkbæk" <thomas@FJERN_DETTEsinkbaek.com> wrote in message
news:b2ru01$ain$1@sunsite.dk...
> Hej!
>
> Jeg bruger GD-lib til at skalere uploadede billeder. Her har jeg med
> nedenstående kode fastsat bredden og så regnet mig til højden.
> <?
> $prop = $w / $h;
> $new_w = 143;
> $new_h = $new_w / $prop;
> $dst_img = imagecreatetruecolor($new_w,$new_h);
> ?>
> Men nu har jeg så fået brug for at kunne lave et billede til en helt
bestemt
> størrelse - dvs. fast højde og bredde - uden at ændre proportioner.
Har lavet denne funktion, du nok kan bruge:
function MakeThumbnail($Image, $Album) {
global $OS, $AlbumRoot, $ThumbnailPreString, $ThumbnailDir, $TNwidth,
$TNhight;
ChangeMode($Album);
$Size = getimagesize($AlbumRoot.$OS.$Album.$OS.$Image);
if ($Size[2]==2) {
if ($Size[0] > $Size[1]) {
$TempTNwidth = $TNwidth;
$TempTNhight = ceil($Size[1]/($Size[0]/$TNwidth));
$HighOffset = ceil(($TNhight-$TempTNhight)/2);
}
else {
$TempTNhight = $TNhight;
$TempTNwidth = ceil($Size[0]/($Size[1]/$TNhight));
$WidthOffset = ceil(($TNwidth-$TempTNwidth)/2);
}
$OldImage = ImageCreateFromJPEG($AlbumRoot.$OS.$Album.$OS.$Image);
$NewImage = ImageCreate($TNwidth, $TNhight);
ImageCopyResized($NewImage, $OldImage, $WidthOffset, $HighOffset, 0, 0,
$TempTNwidth, $TempTNhight, $Size[0], $Size[1]);
$OlduMask = umask(0);
return ImageJPEG($NewImage,
$AlbumRoot.$OS.$Album.$OS.$ThumbnailDir.$OS.$ThumbnailPreString.$Image);
umask($OlduMask);
}
else {
return false;
}
}

>
> Er det muligt at skære en del af billedet ud? Dvs. noget med at croppe
> billedet ned til en fastsat størrelse?
Ja, brug da imagecopyresampled().



Sinkbæk (18-02-2003)
Kommentar
Fra : Sinkbæk


Dato : 18-02-03 16:59

Dan Molberg skrev:
>> Er det muligt at skære en del af billedet ud? Dvs. noget med at croppe
>> billedet ned til en fastsat størrelse?
> Ja, brug da imagecopyresampled().

Hej igen!

Jeg har nu prøvet lidt frem og tilbage med brugen af funktionen du gav mig
og imagecopyresampled() - men når jeg bruger din funktion bliver det
nederste af billedet en bred sort kant.
Kan det ikke lade sig gøre blot at udvælge midten af billedet og derfra lave
en udskæring på fx 100 x 100 pixel - så jeg får et billede på præcis den
størrelse?

--
Med venlig hilsen
Thomas Sinkbæk
www.sinkbaek.com



Dan Molberg (18-02-2003)
Kommentar
Fra : Dan Molberg


Dato : 18-02-03 21:19

"Sinkbæk" <thomas@FJERN_DETTEsinkbaek.com> wrote in message
news:b2tl83$kth$1@sunsite.dk...
> Dan Molberg skrev:
> >> Er det muligt at skære en del af billedet ud? Dvs. noget med at croppe
> >> billedet ned til en fastsat størrelse?
> > Ja, brug da imagecopyresampled().
>
> Hej igen!
>
> Jeg har nu prøvet lidt frem og tilbage med brugen af funktionen du gav mig
> og imagecopyresampled() - men når jeg bruger din funktion bliver det
> nederste af billedet en bred sort kant.
> Kan det ikke lade sig gøre blot at udvælge midten af billedet og derfra
lave
> en udskæring på fx 100 x 100 pixel - så jeg får et billede på præcis den
> størrelse?
Hvis det er et udsnit af midten af billed bruger du bare
imagecopyresampled(), der er ikke mange ben i det.



Sinkbæk (18-02-2003)
Kommentar
Fra : Sinkbæk


Dato : 18-02-03 22:06

Dan Molberg skrev:
> Hvis det er et udsnit af midten af billed bruger du bare
> imagecopyresampled(), der er ikke mange ben i det.

ok, har du et eksempel derpå?

--
Med venlig hilsen
Thomas Sinkbæk
www.sinkbaek.com



Dan Molberg (19-02-2003)
Kommentar
Fra : Dan Molberg


Dato : 19-02-03 09:41

"Sinkbæk" <thomas@FJERN_DETTEsinkbaek.com> wrote in message
news:b2u78g$40u$1@sunsite.dk...
> Dan Molberg skrev:
> > Hvis det er et udsnit af midten af billed bruger du bare
> > imagecopyresampled(), der er ikke mange ben i det.
>
> ok, har du et eksempel derpå?
Det nemmeste er at læse manualen, der står der det hele....

http://www.php.net/manual/en/function.imagecopyresampled.php



Sinkbæk (19-02-2003)
Kommentar
Fra : Sinkbæk


Dato : 19-02-03 10:41

Dan Molberg skrev:
> http://www.php.net/manual/en/function.imagecopyresampled.php

Hej igen!

Nu har jeg fundet ud af det. Fejlen der opstod, så jeg fik den sorte bjælke
var pga. størrelsen jeg længere oppe i scriptet havde sat til forkert.
Nu er mit problem bare at jeg i stedet for at få udskæringen målt fra
øverste venstre hjørne gerne vil have den fra midten og ud?


--
Med venlig hilsen
Thomas Sinkbæk
www.sinkbaek.com



Dan Molberg (19-02-2003)
Kommentar
Fra : Dan Molberg


Dato : 19-02-03 15:01

"Sinkbæk" <thomas@FJERN_DETTEsinkbaek.com> wrote in message
news:b2vjet$qiq$1@sunsite.dk...
> Dan Molberg skrev:
> > http://www.php.net/manual/en/function.imagecopyresampled.php
>
> Hej igen!
>
> Nu har jeg fundet ud af det. Fejlen der opstod, så jeg fik den sorte
bjælke
> var pga. størrelsen jeg længere oppe i scriptet havde sat til forkert.
> Nu er mit problem bare at jeg i stedet for at få udskæringen målt fra
> øverste venstre hjørne gerne vil have den fra midten og ud?
Det er int srcX og int srcY du skal lege med. Det må være org størrelse -
ønskede størrelse delt med to.



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