Avatar billede tobbersecondary Nybegynder
29. maj 2008 - 19:17 Der er 9 kommentarer og
1 løsning

Problemer med rotate image

Hej eksperter

Jeg er ved at lave et website, som skal indeholde en rotateimage-funktion.
Jeg har prøvet forskellige løsninger, men uden held.

Mit problem består i at alle de scripts, jeg har forsøgt mig med kun fungerer uden for html-delen.

Flg script fra http://dk2.php.net/manual/en/function.imagerotate.php er et godt eksempel på dette:

<?php
$r=180; //rotate
$img='upload/mitbillede.jpg';
$source = imagecreatefromjpeg($img);
$img = imagerotate($source, $r, 0);
imagejpeg($img);
?>

Dette script roterer billedet, hvis koden placeres før <html>.
Hvis det flyttes ned i <body>, vises billedet som rå data (masser af forskellige bogstaver og symboler).
Er det mig, som bare ikke kan se skoven for bare træer eller hvad?

Håber på hurtig hjælp...
Avatar billede spliid Nybegynder
29. maj 2008 - 21:17 #1
Inden imagejpeg($img) kaldet skal du have:

header('Content-type: image/jpeg');

det fortæller browseren at det flg. data ikke er "råt" men er et jpeg-billede.
Avatar billede tobbersecondary Nybegynder
29. maj 2008 - 21:28 #2
Hvis jeg tilføjer en header i bodydelen (som du anviser), får jeg en "Cannot modify header information..."

Kan du være mere præcis?
Avatar billede spliid Nybegynder
29. maj 2008 - 22:32 #3
Var lidt for hurtig, en side kan selvfølgelig kun have én content-type. Læg funktionen ud i en separat fil, det giver også pænere kode.

image.php:

<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <img src="function.imagerotate.php">
  </body>
</html>

function.imagerotate.php:

<?php
$r=180; //rotate
$img='upload/mitbillede.jpg';
$source = imagecreatefromjpeg($img);
$img = imagerotate($source, $r, 0);
header('Content-type: image/jpeg');
imagejpeg($img);
?>
Avatar billede tobbersecondary Nybegynder
31. maj 2008 - 17:45 #4
Hej Spliid

Det afhjalp problemet med headeren, men har skabt et nyt problem.
Siden linket til fildestinationen nu er placeret i en ekstern fil (function.image_rotate.php), kan jeg kun få billedvisningen til at fungere med en statisk streng til et billedlink.
Hvad skal jeg gøre for at få scriptet til at reagere på en billed-id fra adresselinjen ($_GET) i image.php?
Avatar billede spliid Nybegynder
31. maj 2008 - 20:00 #5
erstat body i image.php med:

<?php $myimage='upload/mitbillede.jpg' ?>
<img src="function.imagerotate?image=<?php echo $myimage ?> >

og erstat $img='upload/mitbillede.jpg'; i function.imagerotate.php med:

$img = $_GET['image'];

Er det bare det du mener? ;-)
Avatar billede spliid Nybegynder
31. maj 2008 - 20:30 #6
og kalder du image.php?billedid=mitbillede.jpg er det så:

<img src="function.imagerotate?image=<?php echo $_GET['billedid'] ?> >
Avatar billede tobbersecondary Nybegynder
31. maj 2008 - 21:23 #7
Hej Spliid
Har nu prøvet at følge dine anvisninger, men forgæves.
Jeg vil prøve at give dig en mere detaljeret forklaring på, hvad jeg har og hvad jeg mangler:

DET HAR JEG:

Lad os sige at jeg har to php-filer: gallery.php og image.php.

Gallery.php består af thumbnail-billeder, som er hentet op fra en tabel i databasen.
Hvis der klikkes på et thumbnail (alle lodret) på gallery.php skal billedet vises i en større version på image.php.

Billederne har hver 4 felter i tabellen images i db: image_id (primær, auto), image_name, image_filename og image_rotate.

Hvert thumbnail på gallery.php er udstyret med flg. link:
image.php?image_id=<?php echo rs_images['image_id'];?>

Standard-forespørgslen fungerer, som den skal.

DET MANGLER JEG:
Udfordringen for mig består i  at rotere udvalgte billeder på image.php, såfremt der er indhold i db-feltet image_rotate.

Håber, dette er mere tydeligt beskrevet...
Avatar billede spliid Nybegynder
31. maj 2008 - 22:47 #8
Så må du lave en ny query i image.php:
SELECT image_filename, image_rotate FROM images WHERE image_id = $_GET['image_id']

så har du filnavnet, og kalder så rotate funktionen med filnavnet som argument hvis image_rotate er sand.
Avatar billede tobbersecondary Nybegynder
04. juni 2008 - 18:22 #9
Hej Spliid.

Efter dine anvisninger er det efter en hel del bøvlen rundt endelig lykkedes mig at få imagerotate-funktionen til at fungere.
Tusind tak for hjælpen.
Lægger du et svar?

-Tobber
Avatar billede spliid Nybegynder
04. juni 2008 - 22:45 #10
svar :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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