2015-08-24 2 views
0

Я сделал приложение, которое позволяет пользователю делать снимок, который затем будет храниться на онлайн-сервере. Моя проблема заключается в том, что в зависимости от телефона некоторые из изображений принимаются во вращение.Повернуть изображение в PHP

Это мой файл PHP (я получаю изображение закодированное в base64)

<?php 

    $file_path = "photos/"; 
    $image = $_REQUEST['base64']; 
    $name=$_REQUEST['ImageName']; 

    // Decode Image 
    $binary=base64_decode($image); 

    $success = file_put_contents($file_path.$name, $binary); 

    if($success === false) { 
     echo "Couldn't write file"; 
    } else { 
     echo "Wrote $success bytes"; 
    } 
    echo $name; 
?> 

Я попытался с помощью этого кода, но это не меняет свою ориентацию изображения (возможно, потому, что я посылаю это неправильно paramators?)

$exif = exif_read_data($binary); 
$ort = $exif['IFD0']['Orientation']; 
    switch($ort) 
    { 
     case 1: // nothing 
     break; 

     case 2: // horizontal flip 
      $binary->flipImage($public,1); 
     break; 

     case 3: // 180 rotate left 
      $binary->rotateImage($public,180); 
     break; 

     case 4: // vertical flip 
      $binary->flipImage($public,2); 
     break; 

     case 5:// vertical flip + 90 rotate right 
      $binary->flipImage($public, 2); 
       $binary->rotateImage($public, -90); 
     break; 

     case 6: // 90 rotate right 
      $binary->rotateImage($public, -90); 
     break; 

     case 7: // horizontal flip + 90 rotate right 
      $binary->flipImage($public,1);  
      $binary->rotateImage($public, -90); 
     break; 

     case 8: // 90 rotate left 
      $binary->rotateImage($public, 90); 
     break; 
    } 

Любые идеи, что я должен изменить? Прошу прощения, если это может показаться глупым вопросом, но я новичок в php.

ответ

2

Я бы пошел с библиотекой обработки изображений GD для вращения. Вот пример:

// Load the original file into GD 
$path = __DIR__ . '/original.png'; 
$original = imagecreatefrompng($path); 

// Rotate the image by 90 degrees 
$rotated = imagerotate($original, 90, 0); 

// Save the rotated image 
imagepng($rotated, __DIR__ . '/rotated.png'); 
Смежные вопросы