Avatar billede brandy Nybegynder
17. november 2003 - 12:05 Der er 16 kommentarer og
1 løsning

Thumbnail cropping

<?
function thumbnail ($start_billede,$billede_sti,$kvalitet,$bredde,$hoejde,$ny_bredde,$ny_hoejde){
    $imagefile = ".." . $billede_sti;
    $newthumb = $start_billede;
    $sti = "/billeder/temp/";
    $billede_sti_thumb = ".." . $sti . $newthumb;   
    $src_img = ImageCreateFromJPEG($imagefile);
    $thumbnail = ImageCreateTruecolor("$bredde","$hoejde");
    $aspekt = ($ny_bredde/$ny_hoejde);
    $y_hoejde = ($bredde/$aspekt);
    $vy = max((($y_hoejde/2) - ($hoejde/2)));
    ImageCopyResampled($thumbnail,$src_img,0,0,0,$vy,$bredde,$y_hoejde,$ny_bredde,$ny_hoejde);
    ImageJPEG($thumbnail,$billede_sti_thumb,$kvalitet);   
    ImageDestroy($thumbnail);
}
?>

Mit script "skulle" kunne lave en thumbnail med en given bredde udfra et billede. Thumbanilen skal beholde billedets aspect. Det skal være sådan at bredden på thumbnailen udgør bredden på billedet, men højden af thumbnailen skal kun være et udsnit af billedets højde. Samtidig skal thumbnailen genereres udfra centrum af billedet...
Forvirret? Her er en illustration:
http://www.andys.dk/thumb.gif

Funktionen virker som sådan nu. Bortset fra at den laver thumbnailen som vist på illustrationen.

Nogen der kan hjælpe? Måske er det bare en lille dum fejl jeg har lavet, men jeg kan ikke gennemskue den..
Avatar billede brandy Nybegynder
17. november 2003 - 12:12 #1
Det mørkegrå område skal illustrere thumbnail'en
Avatar billede detox Nybegynder
17. november 2003 - 13:42 #2
Tror du skal kigge på den her:
$vy = max((($y_hoejde/2) - ($hoejde/2)));
måske:
$vy = max(($y_hoejde/2), ($hoejde/2));
Avatar billede detox Nybegynder
17. november 2003 - 13:44 #3
Næ, måske bare:
$vy = ($y_hoejde/2)-($hoejde/2);
Avatar billede detox Nybegynder
17. november 2003 - 13:46 #4
Eller rettere:
$vy = ($hoejde/2)-($y_hoejde/2);
Avatar billede brandy Nybegynder
17. november 2003 - 16:34 #5
Hej!

Det virker ikke...resultatet af $vy vil i et eksempel give:
$vy = ($y_hoejde/2)-($hoejde/2);
$vy = (150/2) - (80/2);
$vy = 35;
og det er også fint nok, men thumbnailen bliver genereret som om $vy = 10;

jeg er helt lost!
Avatar billede detox Nybegynder
17. november 2003 - 16:50 #6
Måske den skal være:

ImageCopyResampled($thumbnail,$src_img,0,$vy,0,0,$ny_bredde,$ny_hoejde,$bredde,$y_hoejde);
Avatar billede brandy Nybegynder
17. november 2003 - 16:56 #7
Tester det lige 2 sec...
Avatar billede brandy Nybegynder
17. november 2003 - 17:06 #8
Virker ikke.
$ny_hoejde og $ny_bredde indholder værdier fra original-billedet, hvis det hjælper
Avatar billede detox Nybegynder
17. november 2003 - 17:11 #9
Nå, men så måske:

ImageCopyResampled($thumbnail,$src_img,0,$vy,0,0,$bredde,$y_hoejde,$ny_bredde,$ny_hoejde);
Avatar billede brandy Nybegynder
17. november 2003 - 17:23 #10
ImageCopyResampled($thumbnail,$src_img,0,0,0,$vy,$bredde,$y_hoejde,$ny_bredde,$ny_hoejde);

Er det der virker bedst - og det jeg startede med - men som illustrationen viser virker det ikke korrekt.. :-(
Avatar billede detox Nybegynder
17. november 2003 - 17:30 #11
Ok, iflg manualen ser det bare ud som om værdierne for destx og desty kommer før sourcex og sourcey.
Avatar billede brandy Nybegynder
17. november 2003 - 17:41 #12
int imagecopyresampled ( resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)

Nej den skulle være god nok...hmmm...jeg forstår simpelthen ikke hvorfor det ikke virker(!!!!!!!!!)
Avatar billede detox Nybegynder
17. november 2003 - 18:16 #13
Det her fungerer hos mig:

<?
function thumbnail ($start_billede,$billedsti,$kvalitet,$bredde,$hoejde,$ny_bredde,$ny_hoejde){
    $imagefile = $billedsti;
    $newthumb = $start_billede;
    $sti = "temp/";
    $billede_sti_thumb = $sti . $newthumb;   
    $src_img = ImageCreateFromJPEG($imagefile);
    $thumbnail = ImageCreateTruecolor($bredde,$hoejde);
    $aspekt = ($ny_bredde/$ny_hoejde);
    $y_hoejde = ($bredde/$aspekt);
    $vy = ($hoejde/2) - ($y_hoejde/2);
    ImageCopyResampled($thumbnail,$src_img,0,$vy,0,0,$ny_bredde,$y_hoejde,$bredde,$hoejde);
    header("Content-type: image/jpeg");
    ImageJPEG($thumbnail,"",$kvalitet);   
    ImageDestroy($thumbnail);
}
thumbnail('mythumb.jpg',"img/first.jpg",100,400,300,400,180);
?>
Avatar billede brandy Nybegynder
17. november 2003 - 19:31 #14
Okay - det virker ikke hos mig...måske det er min version af GD-lib der ikke fungerer ordentligt...har den nyeste version.
Avatar billede brandy Nybegynder
17. november 2003 - 19:35 #15
Nu virker det:
    $vy = ($hoejde/2) - ($y_hoejde/2);
    ImageCopyResampled($thumbnail,$src_img,0,$vy,0,0,$bredde,$y_hoejde,$ny_bredde,$ny_hoejde);

en blanding mellem dit og mit fungerede perfekt - læg et svar så point'er jeg dig :-)
Avatar billede detox Nybegynder
17. november 2003 - 19:52 #16
c",)
Avatar billede brandy Nybegynder
17. november 2003 - 20:46 #17
Danke :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester