PHP ile kare olmayan ürün resimleri problemi - R10.net
  • 25-06-2020, 10:26:41
    #1
    Merhaba, aşağıdaki gibi örneğin 300*500 px bir resim var.


    siteye eklenen resmin 500*500 olmasını istiyorum mesela.

    1. resim sitede alana sığdırmak için %100 genişlettiği için yana doğru kocaman bir görsel oluyor. 100*500 de olsa uzun px uzunluğunda kare yaparak kısa px olan yerden kare olacak şekilde kalan alanda ki kısma beyaz arka plan verebilirmi. teşekkürler
    HK ASİSTAN | 0850 346 24 08
  • 25-06-2020, 10:31:47
    #3
    PHP sınıflarından simpleImage diye araştırırsan sorununu çözeceğini umuyorum.
    Wordpress Optimizasyon, Organik Hit, SEO
  • 25-06-2020, 10:35:08
    #4
    firatatalay34 adlı üyeden alıntı
    Tam olarak ne istediğinizi anlayamadım açıkçası

    2 resimde aynı. ürün leğen ama soldaki resimde kova gibi görünüyor. ürün detayında ise gerçek ürün resmi boyutunda geliyor. yani bu resim atıyorum 600*300 ise 600*600 yapsın 300 olan kısmı da ortalasın mesela.
    HK ASİSTAN | 0850 346 24 08
  • 25-06-2020, 11:00:10
    #5
    hkasistan adlı üyeden alıntı
    2 resimde aynı. ürün leğen ama soldaki resimde kova gibi görünüyor. ürün detayında ise gerçek ürün resmi boyutunda geliyor. yani bu resim atıyorum 600*300 ise 600*600 yapsın 300 olan kısmı da ortalasın mesela.
    Çözüm sunamadım fakat anladım pixel olarak görüntü büyüyecek ama ürün büyümeyecek yani sadece çevresi genişletilecek.
    Up niyetine mesaj atmış olayım da yukarılarda gözüksün
  • 26-06-2020, 08:42:03
    #7
    Ben bu fonksiyonu kullanıyorum. Upload ettiğin kısımda veya sonrasında kullanabilirsin.

    function resize($source_image, $destination, $tn_w, $tn_h, $quality = 100, $wmsource = false)
    {
    $info = getimagesize($source_image);
    $imgtype = image_type_to_mime_type($info[2]);
    
    #assuming the mime type is correct
    switch ($imgtype) {
    case 'image/jpeg':
    $source = imagecreatefromjpeg($source_image);
    break;
    case 'image/gif':
    $source = imagecreatefromgif($source_image);
    break;
    case 'image/png':
    $source = imagecreatefrompng($source_image);
    break;
    default:
    die('Invalid image type.');
    }
    
    #Figure out the dimensions of the image and the dimensions of the desired thumbnail
    $src_w = imagesx($source);
    $src_h = imagesy($source);
    
    
    #Do some math to figure out which way we'll need to crop the image
    #to get it proportional to the new size, then crop or adjust as needed
    
    $x_ratio = $tn_w / $src_w;
    $y_ratio = $tn_h / $src_h;
    
    if (($src_w <= $tn_w) && ($src_h <= $tn_h)) {
    $new_w = $src_w;
    $new_h = $src_h;
    } elseif (($x_ratio * $src_h) < $tn_h) {
    $new_h = ceil($x_ratio * $src_h);
    $new_w = $tn_w;
    } else {
    $new_w = ceil($y_ratio * $src_w);
    $new_h = $tn_h;
    }
    
    $newpic = imagecreatetruecolor(round($new_w), round($new_h));
    imagecopyresampled($newpic, $source, 0, 0, 0, 0, $new_w, $new_h, $src_w, $src_h);
    $final = imagecreatetruecolor($tn_w, $tn_h);
    $backgroundColor = imagecolorallocate($final, 255, 255, 255);
    imagefill($final, 0, 0, $backgroundColor);
    //imagecopyresampled($final, $newpic, 0, 0, ($x_mid - ($tn_w / 2)), ($y_mid - ($tn_h / 2)), $tn_w, $tn_h, $tn_w, $tn_h);
    imagecopy($final, $newpic, (($tn_w - $new_w)/ 2), (($tn_h - $new_h) / 2), 0, 0, $new_w, $new_h);
    
    #if we need to add a watermark
    if ($wmsource) {
    #find out what type of image the watermark is
    $info = getimagesize($wmsource);
    $imgtype = image_type_to_mime_type($info[2]);
    
    #assuming the mime type is correct
    switch ($imgtype) {
    case 'image/jpeg':
    $watermark = imagecreatefromjpeg($wmsource);
    break;
    case 'image/gif':
    $watermark = imagecreatefromgif($wmsource);
    break;
    case 'image/png':
    $watermark = imagecreatefrompng($wmsource);
    break;
    default:
    die('Invalid watermark type.');
    }
    
    #if we're adding a watermark, figure out the size of the watermark
    #and then place the watermark image on the bottom right of the image
    $wm_w = imagesx($watermark);
    $wm_h = imagesy($watermark);
    imagecopy($final, $watermark, $tn_w - $wm_w, $tn_h - $wm_h, 0, 0, $tn_w, $tn_h);
    
    }
    if (imagejpeg($final, $destination, $quality)) {
    return true;
    }
    return false;
    }
    
    
    
    resize($file, $file, 600, 600);
    http://www.yahyaaydin.com.tr
  • 26-06-2020, 09:10:34
    #8
    yahyaaydin adlı üyeden alıntı
    Ben bu fonksiyonu kullanıyorum. Upload ettiğin kısımda veya sonrasında kullanabilirsin.

    function resize($source_image, $destination, $tn_w, $tn_h, $quality = 100, $wmsource = false)
    {
    $info = getimagesize($source_image);
    $imgtype = image_type_to_mime_type($info[2]);
    
    #assuming the mime type is correct
    switch ($imgtype) {
    case 'image/jpeg':
    $source = imagecreatefromjpeg($source_image);
    break;
    case 'image/gif':
    $source = imagecreatefromgif($source_image);
    break;
    case 'image/png':
    $source = imagecreatefrompng($source_image);
    break;
    default:
    die('Invalid image type.');
    }
    
    #Figure out the dimensions of the image and the dimensions of the desired thumbnail
    $src_w = imagesx($source);
    $src_h = imagesy($source);
    
    
    #Do some math to figure out which way we'll need to crop the image
    #to get it proportional to the new size, then crop or adjust as needed
    
    $x_ratio = $tn_w / $src_w;
    $y_ratio = $tn_h / $src_h;
    
    if (($src_w <= $tn_w) && ($src_h <= $tn_h)) {
    $new_w = $src_w;
    $new_h = $src_h;
    } elseif (($x_ratio * $src_h) < $tn_h) {
    $new_h = ceil($x_ratio * $src_h);
    $new_w = $tn_w;
    } else {
    $new_w = ceil($y_ratio * $src_w);
    $new_h = $tn_h;
    }
    
    $newpic = imagecreatetruecolor(round($new_w), round($new_h));
    imagecopyresampled($newpic, $source, 0, 0, 0, 0, $new_w, $new_h, $src_w, $src_h);
    $final = imagecreatetruecolor($tn_w, $tn_h);
    $backgroundColor = imagecolorallocate($final, 255, 255, 255);
    imagefill($final, 0, 0, $backgroundColor);
    //imagecopyresampled($final, $newpic, 0, 0, ($x_mid - ($tn_w / 2)), ($y_mid - ($tn_h / 2)), $tn_w, $tn_h, $tn_w, $tn_h);
    imagecopy($final, $newpic, (($tn_w - $new_w)/ 2), (($tn_h - $new_h) / 2), 0, 0, $new_w, $new_h);
    
    #if we need to add a watermark
    if ($wmsource) {
    #find out what type of image the watermark is
    $info = getimagesize($wmsource);
    $imgtype = image_type_to_mime_type($info[2]);
    
    #assuming the mime type is correct
    switch ($imgtype) {
    case 'image/jpeg':
    $watermark = imagecreatefromjpeg($wmsource);
    break;
    case 'image/gif':
    $watermark = imagecreatefromgif($wmsource);
    break;
    case 'image/png':
    $watermark = imagecreatefrompng($wmsource);
    break;
    default:
    die('Invalid watermark type.');
    }
    
    #if we're adding a watermark, figure out the size of the watermark
    #and then place the watermark image on the bottom right of the image
    $wm_w = imagesx($watermark);
    $wm_h = imagesy($watermark);
    imagecopy($final, $watermark, $tn_w - $wm_w, $tn_h - $wm_h, 0, 0, $tn_w, $tn_h);
    
    }
    if (imagejpeg($final, $destination, $quality)) {
    return true;
    }
    return false;
    }
    
    
    
    resize($file, $file, 600, 600);
    Allah razı olsun
    HK ASİSTAN | 0850 346 24 08