• 14-12-2023, 13:23:03
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşlar merhaba elimde bir resim var. 1300 x 450 boyutunda. Bunun tam ortasına yüklediğim resmi 450x 450 boyutunda oval bir şekilde kesip yerleştirip sonra göstermesini istiyorum. Fakat yapamadım. Bununla ilgili bir kaynak öneriniz var mı?
  • 14-12-2023, 13:30:01
    #2
    GD veya Imagick kütüphanesini kullanabilirsin
  • 14-12-2023, 13:33:27
    #3
    Evet GD kütüphanesi ile işlem yapmayı denedim ama olmadı. Örnek bir kod olsa fena olmayacak bana.
  • 14-12-2023, 13:56:17
    #4
    Ekledim ama oval yapamadım:
    <?php
    $ana_resim_yolu = 'resim.png';
    $ana_resim = imagecreatefromjpeg($ana_resim_yolu);
    
    $oval_resim_yolu = 'oval.png';
    $oval_resim = imagecreatefrompng($oval_resim_yolu);
    
    $oval_genislik = imagesx($oval_resim);
    $oval_yukseklik = imagesy($oval_resim);
    
    $ana_genislik = imagesx($ana_resim);
    $ana_yukseklik = imagesy($ana_resim);
    
    $x = ($ana_genislik - $oval_genislik) / 2;
    $y = ($ana_yukseklik - $oval_yukseklik) / 2;
    imagecopy($ana_resim, $oval_resim, $x, $y, 0, 0, $oval_genislik, $oval_yukseklik);
    
    header('Content-Type: image/jpeg');
    imagejpeg($ana_resim);
    
    imagedestroy($ana_resim);
    imagedestroy($oval_resim);
    ?>
    biraz araştırdım resmi oval yaptım ama tam istediğim gibi olmadı:
    <?php
    
    $resim_yolu = 'oval.png';
    $resim = imagecreatefrompng($resim_yolu); // eğer jpeg bir resim kullanıyorsan imagecreatefromjpeg fonksiyonunu kullan
    
    $genislik = imagesx($resim);
    $yükseklik = imagesy($resim);
    
    $mask_genislik = $genislik;
    $mask_yukseklik = $yükseklik;
    $mask = imagecreatetruecolor($mask_genislik, $mask_yukseklik);
    $mask_rengi = imagecolorallocate($mask, 255, 255, 255);
    imagefilledellipse($mask, $mask_genislik / 2, $mask_yukseklik / 2, $mask_genislik, $mask_yukseklik, $mask_rengi);
    imagecolortransparent($mask, $mask_rengi);
    
    $resim_maskeli = imagecreatetruecolor($genislik, $yükseklik);
    imagecopymerge($resim_maskeli, $resim, 0, 0, 0, 0, $genislik, $yükseklik, 100);
    imagecopy($resim_maskeli, $mask, 0, 0, 0, 0, $genislik, $yükseklik);
    
    header('Content-Type: image/png');
    imagepng($resim_maskeli);
    
    imagedestroy($resim);
    imagedestroy($mask);
    imagedestroy($resim_maskeli);
    ?>
  • 14-12-2023, 14:03:25
    #5
    Teşekkür ederim ben de deneyeceğim ama sanırım bir kılavuza ihtiyaç var. Yaklaşık olarak ben de aynı şeyleri yaptım ama olmadı.
  • 14-12-2023, 15:04:38
    #6
    https://github.com/claviska/SimpleImage

    bu package da bulunan overlay fonksiyonu ile kolayca yapabilirsiniz