Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

Res,m boyutlandırmada sorun

yagmayok

1
Onaylı Üye
Üye
Katılım
25 Ocak 2005
Mesajlar
7,131
Açılan Konu
304
Tepki puanı
86
Merhaba,

jpeg veya gif formatlarında herhangi bir sorun ile karşılaşmıyorum. Onları boyutlandırabiliyorum. Ancak diğer türlerde sorunlarlar ile karşılaşıyorum.

Jpg ve bmp dosyalarını kaydetmiyor, png olanları ise belirlediğim boyutlarda siyah bir resim dosyası olarak kaydediyor. Acaba nerede sorun yaşıyor olabilirim...

Kodların hepsini vermeye gerek olmadığını düşünüyorum. image işlemlerinde hata görüyor musunuz acaba ?

Bu arada belki sorun olarak $uzantı değişkenin hatalıdır diyebilirsiniz ama değil. Onu echo ile alıp kontorl ediyorum.

PHP:
if ($uzanti == 'jpeg' ) {
$kaynak = imagecreatefromjpeg($dosya); 
}
else if ($uzanti == 'gif')  {
$kaynak = imagecreatefromgif($dosya);  
}
else if ($uzanti ==  'jpg')  {
$kaynak = imagecreatefromjpg($dosya);   
}
else if ($uzanti ==  'png')  {
$kaynak = imagecreatefrompng($dosya);   
}
else if ($uzanti ==  'bmp')  {
$kaynak = imagecreatefrombmp($dosya);   
}



if ($uzanti == 'jpeg' ) {
imagejpeg($thumb,$hedefdosya);
}
else if ($uzanti == 'gif')  {
imagegif($thumb,$hedefdosya); 
}
else if ($uzanti ==  'jpg')  {
imagejpg($thumb,$hedefdosya);
}
else if ($uzanti ==  'png')  {
imagepng($thumb,$hedefdosya);
}
else if ($uzanti ==  'bmp')  {
imagebmp($thumb,$hedefdosya);
}

Teşekkür ederim.
 

sempaty

1
Onaylı Üye
Üye
Katılım
25 Şubat 2005
Mesajlar
3,824
Açılan Konu
87
Tepki puanı
20
Konum
hawaii. ama sanal tur.
imagecreatefromjpeg($dosya); bu hem jpg hem jpeg içindir.
imagecreatefromjpg($dosya); kullanımı hatalı.

bmp formatının da o kullanımı yok. onun için ayrı bir fonksiyon ekleyebilirsin:

PHP:
<?php
/*********************************************/
/* Fonction: ImageCreateFromBMP              */
/* Author:   DHKold                          */
/* Contact:  [email protected]                */
/* Date:     The 15th of June 2005           */
/* Version:  2.0B                            */
/*********************************************/

function ImageCreateFromBMP($filename)
{
 //Ouverture du fichier en mode binaire
   if (! $f1 = fopen($filename,"rb")) return FALSE;

 //1 : Chargement des ent�tes FICHIER
   $FILE = unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset", fread($f1,14));
   if ($FILE['file_type'] != 19778) return FALSE;

 //2 : Chargement des ent�tes BMP
   $BMP = unpack('Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel'.
                 '/Vcompression/Vsize_bitmap/Vhoriz_resolution'.
                 '/Vvert_resolution/Vcolors_used/Vcolors_important', fread($f1,40));
   $BMP['colors'] = pow(2,$BMP['bits_per_pixel']);
   if ($BMP['size_bitmap'] == 0) $BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset'];
   $BMP['bytes_per_pixel'] = $BMP['bits_per_pixel']/8;
   $BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']);
   $BMP['decal'] = ($BMP['width']*$BMP['bytes_per_pixel']/4);
   $BMP['decal'] -= floor($BMP['width']*$BMP['bytes_per_pixel']/4);
   $BMP['decal'] = 4-(4*$BMP['decal']);
   if ($BMP['decal'] == 4) $BMP['decal'] = 0;

 //3 : Chargement des couleurs de la palette
   $PALETTE = array();
   if ($BMP['colors'] < 16777216)
   {
    $PALETTE = unpack('V'.$BMP['colors'], fread($f1,$BMP['colors']*4));
   }

 //4 : Cr�ation de l'image
   $IMG = fread($f1,$BMP['size_bitmap']);
   $VIDE = chr(0);

   $res = imagecreatetruecolor($BMP['width'],$BMP['height']);
   $P = 0;
   $Y = $BMP['height']-1;
   while ($Y >= 0)
   {
    $X=0;
    while ($X < $BMP['width'])
    {
     if ($BMP['bits_per_pixel'] == 24)
        $COLOR = unpack("V",substr($IMG,$P,3).$VIDE);
     elseif ($BMP['bits_per_pixel'] == 16)
     {  
        $COLOR = unpack("n",substr($IMG,$P,2));
        $COLOR[1] = $PALETTE[$COLOR[1]+1];
     }
     elseif ($BMP['bits_per_pixel'] == 8)
     {  
        $COLOR = unpack("n",$VIDE.substr($IMG,$P,1));
        $COLOR[1] = $PALETTE[$COLOR[1]+1];
     }
     elseif ($BMP['bits_per_pixel'] == 4)
     {
        $COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1));
        if (($P*2)%2 == 0) $COLOR[1] = ($COLOR[1] >> 4) ; else $COLOR[1] = ($COLOR[1] & 0x0F);
        $COLOR[1] = $PALETTE[$COLOR[1]+1];
     }
     elseif ($BMP['bits_per_pixel'] == 1)
     {
        $COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1));
        if     (($P*8)%8 == 0) $COLOR[1] =  $COLOR[1]        >>7;
        elseif (($P*8)%8 == 1) $COLOR[1] = ($COLOR[1] & 0x40)>>6;
        elseif (($P*8)%8 == 2) $COLOR[1] = ($COLOR[1] & 0x20)>>5;
        elseif (($P*8)%8 == 3) $COLOR[1] = ($COLOR[1] & 0x10)>>4;
        elseif (($P*8)%8 == 4) $COLOR[1] = ($COLOR[1] & 0x8)>>3;
        elseif (($P*8)%8 == 5) $COLOR[1] = ($COLOR[1] & 0x4)>>2;
        elseif (($P*8)%8 == 6) $COLOR[1] = ($COLOR[1] & 0x2)>>1;
        elseif (($P*8)%8 == 7) $COLOR[1] = ($COLOR[1] & 0x1);
        $COLOR[1] = $PALETTE[$COLOR[1]+1];
     }
     else
        return FALSE;
     imagesetpixel($res,$X,$Y,$COLOR[1]);
     $X++;
     $P += $BMP['bytes_per_pixel'];
    }
    $Y--;
    $P+=$BMP['decal'];
   }

 //Fermeture du fichier
   fclose($f1);

 return $res;
}
?>

ImageCreateFromBMP($dosya);
 

yagmayok

1
Onaylı Üye
Üye
Katılım
25 Ocak 2005
Mesajlar
7,131
Açılan Konu
304
Tepki puanı
86
Sempaty, açıklamalar için teşekkür ederim ...

Sorun çözülmüştür...
 
Üst