• 19-06-2010, 16:25:24
    #1
    Üyeliği durduruldu
    Merhaba Arkadaşlar,

    Php ile upload yapip resmi resize ettirmek icin ugrasiyorum. Resize ettirmekte sorun yok ama şunu yapmak istiyorum.

    6 Mb, 300 Dpi bir resim war bunu 6 farkli sekilde resize ettirmek istiyorum.

    Örnek:
    100*100
    200*200
    300*300
    400*400
    500*500
    600*600

    boyutlarinda. Ama boyut ne olursa olsun Dpi düşmesin istiyorum. Resize ettirdigim zaman dpi 96 ya düşüyor. Nasil yapilacagi konusunda fikri olan warmi. 2 gundur ugrasiyorum bir türlü çözemedim...

    Simdiden cok tesekkürler...
  • 19-06-2010, 18:04:52
    #2
    bi ara bende kasmıştım bu olay için ama dpi ile işim olmadı
    http://tr.php.net/manual/tr/ref.image.php buraya bak diyeceğim ama sen coktan bakmışssındır http://tr.php.net/manual/tr/function...opyresized.php bunuda incelemişsindir.. bir şekilde çıkarsın sen bu işin içinden kolay gelsin kardeşim bende ömğrenmiş olcam sayende
  • 19-06-2010, 18:24:28
    #3
    class SimpleImage {
       
       var $image;
       var $image_type;
       
       function load($filename) {
          $image_info = getimagesize($filename);
          $this->image_type = $image_info[2];
          if( $this->image_type == IMAGETYPE_JPEG ) {
             $this->image = imagecreatefromjpeg($filename);
          } elseif( $this->image_type == IMAGETYPE_GIF ) {
             $this->image = imagecreatefromgif($filename);
          } elseif( $this->image_type == IMAGETYPE_PNG ) {
             $this->image = imagecreatefrompng($filename);
          }
       }
       function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
          if( $image_type == IMAGETYPE_JPEG ) {
             imagejpeg($this->image,$filename,$compression);
          } elseif( $image_type == IMAGETYPE_GIF ) {
             imagegif($this->image,$filename);         
          } elseif( $image_type == IMAGETYPE_PNG ) {
             imagepng($this->image,$filename);
          }   
          if( $permissions != null) {
             chmod($filename,$permissions);
          }
       }
       function output($image_type=IMAGETYPE_JPEG) {
          if( $image_type == IMAGETYPE_JPEG ) {
             imagejpeg($this->image);
          } elseif( $image_type == IMAGETYPE_GIF ) {
             imagegif($this->image);         
          } elseif( $image_type == IMAGETYPE_PNG ) {
             imagepng($this->image);
          }   
       }
       function getWidth() {
          return imagesx($this->image);
       }
       function getHeight() {
          return imagesy($this->image);
       }
       function resizeToHeight($height) {
          $ratio = $height / $this->getHeight();
          $width = $this->getWidth() * $ratio;
          $this->resize($width,$height);
       }
       function resizeToWidth($width) {
          $ratio = $width / $this->getWidth();
          $height = $this->getheight() * $ratio;
          $this->resize($width,$height);
       }
       function scale($scale) {
          $width = $this->getWidth() * $scale/100;
          $height = $this->getheight() * $scale/100; 
          $this->resize($width,$height);
       }
       function resize($width,$height) {
          $new_image = imagecreatetruecolor($width, $height);
          imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
          $this->image = $new_image;   
       }
       function temizle($pis){
       return preg_replace("/^0-9/","",$pis);    
       }      
    }
  • 19-06-2010, 19:42:46
    #4
    Üyeliği durduruldu
    ilginiz icin tesekkurler ama ikiside sorunu çözmedi :SSSSSS Kafayı yemek üzereyim
  • 19-06-2010, 19:44:50
    #5
    kralmermii adlı üyeden alıntı: mesajı görüntüle
    ilginiz icin tesekkurler ama ikiside sorunu çözmedi :SSSSSS Kafayı yemek üzereyim
    çözümü bulduktan sonra burada paylaş googleden gelenler hakkında iyi düşünmez yoksa bende seni bekliyorum
  • 19-06-2010, 20:21:54
    #6
    Üyeliği durduruldu
    ByTriSLaSiS adlı üyeden alıntı: mesajı görüntüle
    çözümü bulduktan sonra burada paylaş googleden gelenler hakkında iyi düşünmez yoksa bende seni bekliyorum

    koduy çözelimde paylasiriz abi
  • 19-06-2010, 22:06:01
    #7
    Benim bildiğim kadarıyla web standardı 72 / 96 olduğu için, bu durumu engelleyemezsiniz sanırım. Umarım bu sorun çözülür de biz de yeni birşey öğrenmiş oluruz

    Edit: hocam imagick sınıfını inceledim biraz ve şöyle birşey buldum. Dilerseniz bi inceleyin: http://tr.php.net/manual/tr/function...resolution.php
  • 19-06-2010, 22:57:34
    #8
    resize yerine direk crop yapsan olmazmı direk resmin istediğin alanını crop yap çıktı yaparkende

    imagejpeg("quality") degerini 100 yap ? ben test ettim bir problem yok inş işini görür kardeşim


    <?php
    //Bytrislasis Tarafından Hazırlanmıştır...
    $Resmim            = "Bytrislasis.jpg";
    $X_Basla           = 300;
    $Y_Basla           = 250;
    $Width_Cropla    = 500;
    $Height_Cropla   = 500;
    
    $Orjin_Resim      = imagecreatefromjpeg($Resmim);
    $Kesme             = imagecreatetruecolor($Width_Cropla,$Height_Cropla);
    
    list($Genislik, $Yukseklik) = getimagesize($Resmim);
    
    imagecopyresampled($Kesme, $Orjin_Resim, 0, 0, $X_Basla, $Y_Basla, $Genislik, $Yukseklik, $Genislik, $Yukseklik);
    
    header("Content-type: image/jpeg");
    imagejpeg($Kesme,"",100);
    
    imagedestroy($Kesme);
    imagedestroy($Orjin_Resim);
    ?>
    Orjinal Resim
    Kesilen Resim

    Kalite Mütiş

    imagecopyresampled bu kod yerine bunuda dene ImageCopyResized
    Denemedim Sonuc olumlu Bende ?? Küçültüncede kalite aynı cıktı

    birde burayı incele
    kaynak

    buda Küçültülmüş hali resize
    <?php
    //Bytrislasis Tarafından Hazırlanmıştır...
    $Resmim         = "myfile.jpg";
    $X_Basla         = 900;
    $Y_Basla         = 950;
    $Width_Cropla   = 800;
    $Height_Cropla  = 900;
    
    $Orjin_Resim     = imagecreatefromjpeg($Resmim);
    $Kesme              = imagecreatetruecolor($Width_Cropla,$Height_Cropla);
    
    list($Genislik, $Yukseklik) = getimagesize($Resmim);
    
    ImageCopyResized($Kesme, $Orjin_Resim, 0, 0, $X_Basla, $Y_Basla, $Genislik, $Yukseklik, $Genislik, $Yukseklik);
    
    header("Content-type: image/jpeg");
    imagejpeg($Kesme,"",100);
    
    imagedestroy($Kesme);
    imagedestroy($Orjin_Resim);
    ?>
    evet sonuc eşit kalite bozulmuyor denedim şimdi test linklerine bak
  • 19-06-2010, 23:11:06
    #9
    @ByTriSLaSiS sende de aynı sorun var orjinal resim 150 dpi, boyutlandırılan resim 96 dpi