Gå til innhold

Snu bilder i en vinkel


Anbefalte innlegg

Videoannonse
Annonse

Det var som jeg trodde, det holdt ikke med imagerotate(), kansje jeg hadde forklart dårlig :blush:

 

Fant funksjonen jeg var ute etter på en av kommentarene på oversikten over gd-funksjoner

 

<?php
function ImageSkew($pImage, $pAngle, $pDirection = 0) { 
 // Source image 
 $iSource = ImageCreateFromPng("test.png"); 

 // Destination image 
 list($width, $height, $type, $attr) = getimagesize($pImage); 
 $iCanvas = @imagecreatetruecolor($width, $height); 
 $cCyan = imagecolorallocate($iCanvas, 0, 0, 0); 
 imagefill($iCanvas, 0, 0, $cCyan); 

 // Pixel differences 
 $diff = ($pAngle / 90); 

 // Loop trough each width pixel 
 $currentHeight = $height; 
 $currentY = 0;
 if ($pDirection == 1) {
  $currentHeight = 0; 
  $currentY = $height;
 }
 for ($i = 0; $i < $width; $i++) { 
  // Take 1*height sample and copy to iCanvas 
  if ($pDirection == 0) {
    imagecopyresampled($iCanvas, $iSource, $i, $currentY, $i, 0, 1, $currentHeight, 1, $height); 
  } else {
    imagecopyresampled($iCanvas, $iSource, ($width - $i), $currentY, ($width - $i), 0, 1, $currentHeight, 1, $height); 
  }

  // Change heights 
  if ($pDirection == 0) {
    $currentHeight = $currentHeight - ($diff * 2); 
    $currentY = ($height - $currentHeight) / 2; 
  } else {
    $currentHeight = $height - ( $i * ($diff * 2) );
    $currentY = ($height - $currentHeight) / 2; 
  }
 } 

 // Return 
 return $iCanvas; 
}  

$angle = 15;

header("Content-Type: image/png"); 
imagepng(ImageSkew("test.png", $angle, 0)); 
exit(); 

?>

 

Eksempel:

post-30-1124183835_thumb.ibf

Endret av zokra
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...