/ 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
Rotere billede?
Fra : Kasper Nordal Lund


Dato : 19-03-07 19:33

Hej med jer.

Jeg har et billedgalleri hvor nogle billeder er taget på højkant, og jeg
vil derfor give mulighed for at rotere billedet 90 grader.

Jeg har lavet en funktion der ser således ud:

function rotateImage($source,$degrees){
   header('Content-type: image/jpeg');   
   $picture = imagecreatefromjpeg($source);
   $rotate = imagerotate($picture, $degrees, 0);
   imagejpeg($picture);
}

Jeg kalder funktionen fra min billedside således:

if (isset($_POST['submit'])){
   rotateImage("/sti/til/billede.jpeg",90);
}

og jeg har en form med en knap så if sætningen bliver sand.

For det første tolker firefox header erklæringen så den viser selve
linket som et billede.

Fjerner jeg header erklæringen vises der en masse volapyk (en masse
tilfældige? tegn).

Kan i mon hjælpe mig til at få det til at virke?

/Kasper


 
 
Nezar Nielsen (20-03-2007)
Kommentar
Fra : Nezar Nielsen


Dato : 20-03-07 12:03

Kasper Nordal Lund wrote:

>    $rotate = imagerotate($picture, $degrees, 0);
>
>    imagejpeg($picture);

Jeg forstår ikke helt hvad du dit problem er, men fra manualen:


// Rotate
$rotate = imagerotate($source, $degrees, 0);

// Output
imagejpeg($rotate);
^^^^^^^ <-- bemærk.



--
Mvh. Nezar Nielsen
http://gorilla.dk

Kasper Nordal Lund (20-03-2007)
Kommentar
Fra : Kasper Nordal Lund


Dato : 20-03-07 19:58

On Tue, 20 Mar 2007 12:03:11 +0100, Nezar Nielsen wrote:

> // Rotate
> $rotate = imagerotate($source, $degrees, 0);
>
> // Output
> imagejpeg($rotate);
> ^^^^^^^ <-- bemærk.

Du har da ret, men det virker nu heller ikke efter jeg har rettet det.

Se f.eks. billedet her og tryk roter under billedet:
http://www.nordal-lund.dk/sites/main.php?site=born/pics&path=born/7-9_mdr&id=50&index=45


Martin (22-03-2007)
Kommentar
Fra : Martin


Dato : 22-03-07 04:52

Kasper Nordal Lund wrote:
> On Tue, 20 Mar 2007 12:03:11 +0100, Nezar Nielsen wrote:
>
>> // Rotate
>> $rotate = imagerotate($source, $degrees, 0);
>>
>> // Output
>> imagejpeg($rotate);
>> ^^^^^^^ <-- bemærk.
>
> Du har da ret, men det virker nu heller ikke efter jeg har rettet det.
>
> Se f.eks. billedet her og tryk roter under billedet:
> http://www.nordal-lund.dk/sites/main.php?site=born/pics&path=born/7-9_mdr&id=50&index=45
>

Når man outputter direkte med imagejpeg og lign. Så gøres det "altid" på
denne måde.

<img src='rotate.php?img=sti/til/billede&degress=90'>

Da man bruger
header('Content-type: image/jpeg');
Så bliver der sagt til browseren at denne side (rotate.php) er et billede.

Rotate.php kan så se ud som din funktion

rotateImage($_GET["img"],$_GET["degrees"]);
function rotateImage($source,$degrees){
   $picture = imagecreatefromjpeg($source);
   $rotate = imagerotate($picture, $degrees, 0);

   header('Content-type: image/jpeg');
   imagejpeg($rotate);
}

En helt anden løsning - er at overskrive dit billede med det rotatede
billede. Noget ala

function rotateImage($source,$degrees){
   $picture = imagecreatefromjpeg($source);
   $rotate = imagerotate($picture, $degrees, 0);
   @unlink($source);
   // Vi smækker lige en @ på, bare for ikke at få en warning/error    //
hvis billedet ikke eksisterer
   file_put_contents($source,imagejpeg($rotate));
   // Bemærk kun til PHP 5 - Ellers skal du bruge noget fwrite...
}

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste