Avatar billede TRoXa Novice
18. september 2003 - 18:27 Der er 23 kommentarer og
1 løsning

roter billede med imagerotate

hvis man drejer et billede 90 grader med imagerotate drejer den det mod venstre i stedet for højre. Er der nogen der har en god forklaring på dette. Da til venstre burde være 270. Men det er lige omvendt i denne funktions tilfælde ... HELPPP Det giver mig overdrevet store problemer at den gør det, og det hjælper mig ikke at bytte om på tallene.
Avatar billede TRoXa Novice
18. september 2003 - 19:21 #1
nu skal i ikke råbe i munden på hinanden da ;) hehe
Avatar billede detox Nybegynder
18. september 2003 - 19:22 #2
Gør vi da heller ikke ;-)
Avatar billede TRoXa Novice
18. september 2003 - 19:22 #3
nejjj detttt :)
Avatar billede detox Nybegynder
18. september 2003 - 19:29 #4
Du kunne lave din egen lille workarround. Eks:

function MyImageRotate($res,$grader,$bg) {
    $grader = 360 - $grader;
    return ImageRotate($res,$grader,$bg);
}
Avatar billede TRoXa Novice
18. september 2003 - 19:30 #5
har prøvet. så blir det bare det modsatte problem :(
Avatar billede TRoXa Novice
18. september 2003 - 19:31 #6
prøv evt dette eksempel fra php.net

<?php
Header("Content-type: image/jpeg");
$filename = "filename.jpg";
$img_size = getImageSize($filename);
$x = $img_size[0];
$y = $img_size[1];
if ($x > $y)
{
  $newd = $x;
}
else
{
  $newd = $y;
}

$src_img = ImageCreateFromJPEG($filename);
$dst_img = ImageCreateTrueColor($newd,$newd);
$final_img = ImageCreateTrueColor($y,$x);

ImageCopyResampled($dst_img,$src_img,0,0,0,0,$x,$y,$x,$y);
$degrees = "90";
$rotated_img = ImageRotate($dst_img,$degrees,0);
ImageCopyResampled($final_img,$rotated_img,0,0,0,0,$y,$x,$y,$x);
ImageJPEG($final_img);
?>

med 90 grader virker det (dog stadig den forkerte vej)

men hvis vi nu siger 270 grader

<?php
Header("Content-type: image/jpeg");
$filename = "filename.jpg";
$img_size = getImageSize($filename);
$x = $img_size[0];
$y = $img_size[1];
if ($x > $y)
{
  $newd = $x;
}
else
{
  $newd = $y;
}

$src_img = ImageCreateFromJPEG($filename);
$dst_img = ImageCreateTrueColor($newd,$newd);
$final_img = ImageCreateTrueColor($y,$x);

ImageCopyResampled($dst_img,$src_img,0,0,0,0,$x,$y,$x,$y);
$degrees = "270";
$rotated_img = ImageRotate($dst_img,$degrees,0);
ImageCopyResampled($final_img,$rotated_img,0,0,0,0,$y,$x,$y,$x);
ImageJPEG($final_img);
?>

så prøv at se hvad der sker .. den går helt i selvsving =/
Avatar billede detox Nybegynder
18. september 2003 - 19:35 #7
Jeg har prøvet med dette og det ser da ud til at fungere:

<?
  Header("Content-type: image/jpeg");
  $filename = "img/first.jpg";
  $img_size = GetImageSize($filename);
  $x = $img_size[0];
  $y = $img_size[1];
  $src_img = ImageCreateFromJpeg($filename);
  $dst_img = ImageCreateTrueColor($x,$y);

  ImageCopyResized($dst_img,$src_img,0,0,0,0,$x,$y,$x,$y);
  $degrees = 270;
  $rotated_img = MyImageRotate($dst_img,$degrees,0);
  ImageJpeg($rotated_img);
function MyImageRotate($res,$grader,$bg) {
    $grader = 360 - $grader;
    return ImageRotate($res,$grader,$bg);
}
?>
Avatar billede TRoXa Novice
18. september 2003 - 19:37 #8
hvad så hvis du siger $degrees = 90 i det tilfælde ?
Avatar billede detox Nybegynder
18. september 2003 - 19:38 #9
Det ser osse rigtigt ud.
Avatar billede detox Nybegynder
18. september 2003 - 19:46 #10
I øvrigt osse med ImageCopyResampled(), som giver et lidt bedre resultat.
Avatar billede TRoXa Novice
18. september 2003 - 19:48 #11
jeg prøver lige så :)
Avatar billede TRoXa Novice
18. september 2003 - 19:49 #12
hvad version af gdlib kører du med ?
Avatar billede TRoXa Novice
18. september 2003 - 19:49 #13
det virker ik her med den sidste kode du skrev. Der får jeg en kæmpe sort kant ovre i højre side. :(
Avatar billede TRoXa Novice
18. september 2003 - 19:53 #14
ahhh .. bruger du et billede der er lige stort på begge sider ?
Avatar billede detox Nybegynder
18. september 2003 - 19:54 #15
Nej billedet er rektangulært. GD-lib hedder: bundled (2.0.15 compatible)
Avatar billede TRoXa Novice
18. september 2003 - 19:55 #16
ahhh min hedder bundled (2.0 compatible) .. måske problemet ligger der
Avatar billede detox Nybegynder
18. september 2003 - 19:58 #17
Kan være...
Avatar billede TRoXa Novice
18. september 2003 - 20:03 #18
hvad version af php kører du med ?
Avatar billede TRoXa Novice
18. september 2003 - 20:05 #19
http://80.164.43.5/skod.php her kan du se hvad den gør på min med den funktion.
Avatar billede detox Nybegynder
18. september 2003 - 20:13 #20
Ja, det ser pudsigt ud. Jeg kører med php ver. 4.3.3.
Avatar billede tipsen Nybegynder
18. september 2003 - 20:13 #21
Jeg vil gætte på at standard i funktionen er at grader måles fra kl. 3 og mod uret - det er det hvertfald i trigonometri og vistnok også i navigation. Dette betyder, at 90 grader laver en rotation mod urets retning, mens -90 grader laver en rotation med urets retning. Hvis du synes, at 90 grader skal være 90 grader med uret i dit system skriver du blot:

$grader = -$grader;
Avatar billede phliplip Nybegynder
18. september 2003 - 20:47 #22
Vi opgraderer til PHP 4.3.3 hvor GD 2.0.15 med i den ;)

Så fandt vi ud af det Johnny !
Avatar billede TRoXa Novice
06. maj 2004 - 10:00 #23
phliplip > Lægger du et svar (3000 år efter :P) Du skal da lige have dine points selvom det ikke er så mange hehe
Avatar billede phliplip Nybegynder
06. maj 2004 - 19:08 #24
Done ;)
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