Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Php resim ölçeklendirme sorunu ?

Merhaba arkadaşlar, php ile resim albümü yapmaya çalışıyorum fakat sıkıntı çektiğim bir durum var, kullanıcı panelinden ornek.jpg adlı resim eklediğinde eklenen resimin genişliği eğer 800px'den büyükse resimin genişliğini 800px ile ölçeklendirip yüksekliğinide otomatik olarak hesaplatıp aynı dizine buyuk.jpg olarak kaydettiriyorum. Ardından birde 120x80 boyutunda aynı dizine kucuk.jpg olarak kaydettiriyorum. Aşağıdaki kodlar sayesinde localhostda sorunsuz şekilde istediğim durum gerçekleşmekte. Sorunum ise aynı kodları sunucuda çalıştırdığımda kullanıcının sisteme yüklemeye çalıştığı resimin genişliği 2800px'den büyükse herhangi bir işlem gerçekleşmiyor ve ekranda bir hatada belirmiyor. Yani kullanıcı dışarıdan 2800px genişliğinden büyük bir resim ölçeklendirmeye çalışırsa hiç bir işlem gerçekleşmiyor. Bu durumun neden kaynaklandığını anlaymadım. Daha önce bu durumla karşılaşmış olan yada aşağıdaki kodlara bakıp fikir iletebilecek arkadaşlardan yardım bekliyorum. İyi çalışmalar.

Örneğin şu bağlantıdaki kodları sisteminize indirin ve localhostta çalıştırın, sorunsuz çalışacaktır. Fakat sunucuya attığınızda hir bir işlem gerçekleşmeyecek vede hata görünmeyecektir. http://www.huseyiniskender.com/resim_olceklendir.rar

Kodlar ise:
<?php
$dosya="ornek.jpg";
//**********************************************
$boyutlar=getimagesize($dosya);

$genislik=$boyutlar[0];
$yukseklik=$boyutlar[1];
$kalite = 80;
$genislik_sinir="800";

if($genislik>$genislik_sinir){
$yeni_genislik=$genislik_sinir;

$yuzde=$genislik/100;

$oran=$genislik_sinir/$yuzde;
$yukseklik_yuzde=$yukseklik/100;
$yeni_yukseklik=ceil($yukseklik_yuzde*$oran);
}
else
{
$yeni_genislik=$genislik;
$yeni_yukseklik=$yukseklik;
}
$yeni_genislik2="120";
$yeni_yukseklik2="80";


$thumb1 = imagecreatetruecolor($yeni_genislik, $yeni_yukseklik);
$thumb2 = imagecreatetruecolor($yeni_genislik2, $yeni_yukseklik2);

$kaynak = imagecreatefromjpeg($dosya);

imagecopyresampled($thumb1, $kaynak, 0, 0, 0, 0, $yeni_genislik, $yeni_yukseklik, $genislik, $yukseklik);
imagecopyresampled($thumb2, $kaynak, 0, 0, 0, 0, $yeni_genislik2, $yeni_yukseklik2, $genislik, $yukseklik);
$sonuc_buyuk=imagejpeg($thumb1, "buyuk.jpg", $kalite);
$sonuc_kucuk=imagejpeg($thumb2, "kucuk.jpg", $kalite);
//**********************************************
?>
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • teacher0610 adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    54 cevap - 29 soru
    Bu kodların en başına
    ini_set('memory_limit', '32M');
    


    ifadesini ekelyerek denermisiniz?
    • huseyiniskender adlı üyenin fotoğrafı huseyiniskender
      Cevabınız için çok teşekkür ederim. Fakat sadece bu kod yeterli olmadı By_AbbA adlı kullanıcının verdiği kod tamamıyla durumu çözdü. İlginiz için tekrardan çok teşekkür ederim.
      12 yıl önce yazılmış