v2.5.2
Giriş yap

Php ile resmi nasıl 90 derece çevirebilirim ?

behzatcemalakgun
226 defa görüntülendi

Merhaba,

Upload klasörümde resimlerim mevcut.

Mysqlde de bunların ismini tutuyorum.

Fancybox ile sitede gösteriyorum fakat bazı kullanıcılar resimler upload ederken 90 derece dönmüş bir şekilde yüklüyorlar.

Bu yan olan resimleri sitede 90 derece saat yönüne veya tersine nasıl çevirtebilirim ?

Yani tıkladığı zaman saat yönüne döndürsün ve öyle kaydetsin.

Yardımlarınız için şimdiden çok teşekkür ederim..

Cevap yaz
Cevaplar (2)
behzatcemalakgun
281 gün önce

Teşekkür ederim.

Farklı şekilde çözdüm.

Herkes yararlansın diye kodları yazıyorum..


<?php

include '../include/db.php';
include '../include/yetki_cek.php';
include '../include/session_verileri_cek.php';

$cevir 		= @$_GET['cevir'];
$kart_id	= @$_GET['kart_id'];

$sorgula_cek = mysqli_query($con, "SELECT * FROM `geciskartlari` WHERE `submission_id` = '$kart_id'");		
while($sorgula_ayir = mysqli_fetch_array($sorgula_cek, MYSQL_ASSOC)){
$resim			 = 	''.$sorgula_ayir["resim"].'';
}

if ($cevir == "sag") {
$degrees = -90;
}

if ($cevir == "sol") {
$degrees = 90;
}

function dosya_uzanti_oku($resim) {
    return substr(strrchr($resim,'.'),1);
}
 
$okunandosyauzantisi = dosya_uzanti_oku($resim); 

if ($okunandosyauzantisi = "jpeg") {     
$source = imagecreatefromjpeg($resim); 
$rotate = imagerotate($source, $degrees, 0);
imagejpeg($rotate, $resim);
}

if ($okunandosyauzantisi = "png") {   
$source = imagecreatefrompng($resim); 
$rotate = imagerotate($source, $degrees, 0);
imagepng($rotate, $resim);
}

$geldigiurl = $_SERVER['HTTP_REFERER'] ;
header ('location: '.$geldigiurl);	

?>

gokcin
282 gün önce

Merhaba!

  1. JavaScript ile Resim Döndürme:
    Kullanıcılar resmi yüklediğinde, JavaScript kullanarak resmin oryantasyonunu kontrol edebilir ve gerektiğinde döndürebilirsiniz. Exif.js gibi kütüphaneler, resim dosyalarının içindeki EXIF verilerini okuyarak resmin doğru oryantasyonunu bulmanıza yardımcı olabilir.

    Örnek kullanım (Exif.js kütüphanesi kullanarak):

    <script src="https://cdn.jsdelivr.net/npm/exif-js"></script>
    <input type="file" id="fileInput" accept="image/*" onchange="handleFileSelect(event)">
    <img id="previewImage" alt="Preview">
    
    <script>
      function handleFileSelect(event) {
        const file = event.target.files[0];
        if (file) {
          const reader = new FileReader();
          reader.onload = function (e) {
            const img = new Image();
            img.src = e.target.result;
            img.onload = function () {
              const orientation = EXIF.getTag(this, "Orientation");
              const rotatedImage = rotateImage(img, orientation);
              document.getElementById("previewImage").src = rotatedImage.src;
            };
          };
          reader.readAsDataURL(file);
        }
      }
    
      function rotateImage(img, orientation) {
        const canvas = document.createElement("canvas");
        const ctx = canvas.getContext("2d");
    
        if (orientation > 4) {
          canvas.width = img.height;
          canvas.height = img.width;
        } else {
          canvas.width = img.width;
          canvas.height = img.height;
        }
    
        switch (orientation) {
          case 2:
            ctx.transform(-1, 0, 0, 1, img.width, 0);
            break;
          case 3:
            ctx.transform(-1, 0, 0, -1, img.width, img.height);
            break;
          case 4:
            ctx.transform(1, 0, 0, -1, 0, img.height);
            break;
          case 5:
            ctx.transform(0, 1, 1, 0, 0, 0);
            break;
          case 6:
            ctx.transform(0, 1, -1, 0, img.height, 0);
            break;
          case 7:
            ctx.transform(0, -1, -1, 0, img.height, img.width);
            break;
          case 8:
            ctx.transform(0, -1, 1, 0, 0, img.width);
            break;
          default:
            ctx.transform(1, 0, 0, 1, 0, 0);
            break;
        }
    
        ctx.drawImage(img, 0, 0);
        const rotatedImage = new Image();
        rotatedImage.src = canvas.toDataURL("image/jpeg");
        return rotatedImage;
      }
    </script>
    
  2. PHP ile Güncelleme:
    Ardından, döndürülen resmi sunucuya yüklediğinizde, PHP veya başka bir sunucu tarafı dili kullanarak resmi güncelleyebilir ve veritabanındaki ismini değiştirebilirsiniz.

    Örnek PHP kodu (sadece fikir vermesi açısından):

    $uploadedImagePath = 'path/to/uploaded/image.jpg';
    $rotatedImagePath = 'path/to/uploaded/rotated_image.jpg';
    
    $img = imagecreatefromjpeg($uploadedImagePath);
    $rotatedImg = imagerotate($img, 90, 0); // 90 derece saat yönüne döndürme
    imagejpeg($rotatedImg, $rotatedImagePath);
    imagedestroy($img);
    imagedestroy($rotatedImg);
    
    // Veritabanında ismi güncelle
    // Örneğin: UPDATE images SET filename = 'rotated_image.jpg' WHERE filename = 'image.jpg';