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