Algemeen forum ontrent de ontwikkelng, design en hosting van weergerelateerde websites (dit laatste om een beetje on topic te blijven)
Door WeerstationGraveNL
#67943
Goedenavond, ik probeer met PHP een uit gedeelte van een afbeelding te nemen en deze te roteren.
Het betreft de aurora ovaal, waarbij ons gebied gedraaid en aan de rechterkant van die afbeelding staat. Om het wat makkelijker "kijkbaar" te maken, zou ik deze afbeeldin graag roteren.
Het gedeelte lukt me wel, maar het roteren wil niet.
Ook wordt de afbeelding afgevlakt qua kleur.
Iemand een idee wat ik verkeerd doe?
Alvast bedankt voor tips.

Code: Selecteer alles
<?php
    $srcImgUrl = 'http://services.swpc.noaa.gov/images/animations/ovation-north/latest.png';
    $srcImgX   = 450;
    $srcImgY   = 250;
    $newWidth  = 200;
    $newHeight = 200;

    $srcImg    = imagecreatefrompng($srcImgUrl);
   
    $newImg    = imagecreate($newWidth, $newHeight);
    imagecopyresized($newImg, $srcImg, 0, 0, $srcImgX, $srcImgY,
                     $newWidth, $newHeight, $newWidth, $newHeight);

   $rotate = imagerotate($newImg, 270, -1);
   imagepng($rotate);

    header("Content-Type: image/png");
    imagepng($newImg);
  ?>
Door wvdkuil
#67944
Code: Selecteer alles
<?php 
    $srcImgUrl = 'http://services.swpc.noaa.gov/images/animations/ovation-north/latest.png';
   
   # $srcImgUrl = 'latest.png';  for testing use a local copy

    $srcImgX   = 350;
    $srcImgY   = 500;
    $newWidth  = 200;
    $newHeight = 200;
 
    $srcImg     = imagecreatefrompng($srcImgUrl);
    $rotate     = imagerotate($srcImg, 270, 0);



    header("Content-Type: image/png"); 
    $newImg         = imagecreatetruecolor($newWidth, $newHeight);
#imagecopyresized($newImg, $rotate, 0, 0, $srcImgX, $srcImgY,
#                     $newWidth, $newHeight, $newWidth, $newHeight);
    imagecopy($newImg, $rotate, 0, 0, $srcImgX, $srcImgY, $newWidth, $newHeight);
    imagepng($newImg);

WeerstationGraveNL schrijft:
Ook wordt de afbeelding afgevlakt qua kleur.

Gebruik: imagecreatetruecolor , die functie geeft de juiste resultaten, zie http://php.net/manual/en/function.imagecreate.php

maar het roteren wil niet.

Er staat wel twee keer een imagepng(), 1 keer voor en 1 keer na de header.

Eerst draaien en dan uitknippen en dan 1 keer terugsturen werkt ook.
Omdat je in de resize de zelfde maten gebruikt heb ik een imagecopy() gebruikt.

Succes, Wim

P.S. Je kunt een dergelijk php script beter niet afsluiten met een ?>
Alles na een ?> wordt als html teruggestuurd naar de browser.
Als na de ?> nog bijvoorbeeld een regeleinde of een blank na staat dan wordt dat allemaal toegevoegd aan de < img src=""

Gebruik alleen een ?> als er html na de ?> moet komen. Gewone php scripts nooit eindigen met een ?>
Door WeerstationGraveNL
#67954
Yes, hij is perfect Wim!
Dankjewel en ook voor de tips.
Ik wil al jaren een PHP-cursus gaan volgen, maar het komt er maar niet van.
Druk druk druk (smoesje, ik weet het :)