lostyazilim

Upload Sonrası Kırpma Problemi

9 Mesajlar 1.024 Okunma
lstbozum
wmaraci reklam

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Arkadaşlar kafayı sıyırıcam, bazı png formatlı resimleri yükleyebilirken bazıları beyaz çıkıyor problem nedir bir türlü çözemedim. Transparent sorunu olduğunu düşündüm başta onun içinde gerekli fonksiyonları ekledim ama resimler transparent olmadığı halde beyaz çıkıyor. Dosya sorunsuz upload oluyor, sorunu çıkaran png uzantısı için çalışan bölüm. Eksik veya gereksiz bir şey etkiliyor. Acaba hatam nerede açıklar mısınız lütfen.


if($FotografKayitDurum){
$targ_w = $targ_h = 350;
$post_x = intval(htmlspecialchars($_POST['x']));
$post_y = intval(htmlspecialchars($_POST['y']));
$jpeg_quality = 100;

$src = "../Images/" . $YeniFotografAdi;
if($uzanti == "jpeg" || $uzanti == "jpg"){
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor($targ_w, $targ_h);

imagecopyresampled($dst_r,$img_r,0,0,$post_x,$post_y,
$targ_w,$targ_h,$_POST['w'],$_POST['h']);
header('Content-type: image/jpeg');

imagejpeg($dst_r,"../Images/" . $YeniFotografAdi,$jpeg_quality);

}elseif($uzanti == "gif"){
$img_r = imagecreatefromgif($img_r);
$dst_r = ImageCreateTrueColor($targ_w, $targ_h);
imagealphablending($dst_r, false);
$colorTransparent = imagecolorallocatealpha($dst_r, 0, 0, 0, 0x7fff0000);
imagefill($dst_r, 0, 0, $colorTransparent);
imagesavealpha($dst_r, true);

imagecopyresampled($dst_r,$img_r,0,0,$post_x,$post_y,
$targ_w,$targ_h,$_POST['w'],$_POST['h']);
header('Content-type: image/gif');

imagegif($dst_r,"../Images/" . $YeniFotografAdi,$jpeg_quality);
}elseif($uzanti == "png"){
$img_r = imagecreatefrompng($img_r);
$dst_r = ImageCreateTrueColor($targ_w, $targ_h);
imagealphablending($dst_r, false);
$colorTransparent = imagecolorallocatealpha($dst_r, 0, 0, 0, 0x7fff0000);
imagefill($dst_r, 0, 0, $colorTransparent);
imagesavealpha($dst_r, true);

imagecopyresampled($dst_r,$img_r,0,0,$post_x,$post_y,
$targ_w,$targ_h,$_POST['w'],$_POST['h']);
header('Content-type: image/png');

imagepng($dst_r,"../Images/" . $YeniFotografAdi,$jpeg_quality);
}
imagedestroy($dst_r);
}


Sorunu bazı dosyalar çıkartıyor. Normal upload yapınca sorunsuz yükleniyor ama kırpma işlemi için yukarıdaki yapıyı kullanırken bazı png uzantılı dosyalar beyaz oluyor.
 

 

wmaraci
reklam

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Sorunu çıkaran nokta.

$dst_r = ImageCreateTrueColor($targ_w, $targ_h);
imagealphablending($dst_r, false);
$colorTransparent = imagecolorallocatealpha($dst_r, 0, 0, 0, 0x7fff0000);
imagefill($dst_r, 0, 0, $colorTransparent);
imagesavealpha($dst_r, true);

Yukarıdaki kodlar nedense hiç çalışmıyor gibi.
 

 

JumperTech JumperTech Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 02.07.2016
  • Yaş/Cinsiyet 39 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad B** O**
  • Mesajlar 1705
  • Beğeniler 820 / 523
  • Ticaret 19, (%100)
https://github.com/eventviva/php-image-resize
 

 

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
teşekkürler cevap için sorunum

$dst_r = ImageCreateTrueColor($targ_w, $targ_h);
altına
$dst_r = imagecolorallocate($dst_r, 255, 255, 255);
kodunu ekleyerek hallettim.

Sorunum çözüldü.

Tek bir sorunum kaldı o da

$_FILES['dosya']['error'] sorunum var.

1 tane resim dosyası var test.jpg bunu upload etmeye çalıştığımda hata kodu 1 dönüyor. Resim dosyasını photoshopta kopyalayıp jpg olarak tekrar kayıt ettiğimde sorunsuz yükleniyor. Başka hiç bir dosyada sorun yok, dosya baştan $_FILES['dosya']['error'] vermesini çözemedim bir türlü. Hatayı görüntülemeye çalıştığımda hiç bir hata görünmüyor.
 

 

wmaraci
wmaraci

dump3cz dump3cz Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 01.05.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Yazılım
  • Konum Bilecik
  • Ad Soyad O** Ç**
  • Mesajlar 1750
  • Beğeniler 169 / 326
  • Ticaret 3, (%67)
Try catch bloğuna koymayı dener misin
 

 

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
İşin komik tarafı hata vermiyor. Dönen $_FILES['dosya']['error'] raporu 1 yani hatalı ama hata yok ortada try catch de de hata vermiyor

https://drive.google.com/file/d/0B5xqH_qYEw1fWTNwc0RQM2RRYnUtc1c2eWRFWUF6ZnJJMzRN/view?usp=sharing

ilgili görsel yukarıdaki linkte dosya mı bozuk acaba
 

 

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Yok arkadaşlar olmamış ya :( normal upload ediyormuş kırpma işlemini yapmıyormuş bende oldu sandım.

$dst_r = ImageCreateTrueColor($targ_w, $targ_h);
$dst_r= imagecolorallocate($dst_r, 255, 255, 255);


şeklinde kayıt ettiğimde kırpma işlemini yapmıyor


$dst_r = ImageCreateTrueColor($targ_w, $targ_h);
$white= imagecolorallocate($dst_r, 255, 255, 255);
imagefill($dst_r, 0, 0, $white);

şeklinde yaptığımda beyaz çıkıyor resimler

if içersindeki alanın tamamı şu şekilde

$dst_r = ImageCreateTrueColor($targ_w, $targ_h);
$white = imagecolorallocate($dst_r, 255, 255, 255);
imagefill($dst_r, 0, 0, $white);
$img_r = imagecreatefrompng($src);
imagecopyresampled($dst_r,$img_r,0,0,$post_x,$post_y, $targ_w,$targ_h,$_POST['w'],$_POST['h']);
header('Content-type: image/png');
imagepng($dst_r,"../Images/SecenekResimleri/" . $YeniFotografAdi,$jpeg_quality);

hatam nerede tam olarak biri akıl verebilir mi lütfen :(
 

 

JumperTech JumperTech Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 02.07.2016
  • Yaş/Cinsiyet 39 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad B** O**
  • Mesajlar 1705
  • Beğeniler 820 / 523
  • Ticaret 19, (%100)
Yukarıda önerdiğim classı tercih etmeyi deneyiniz.
 

 

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
sorunum Quality ayarındanmış.

imagepng($dst_r,"../Images/SecenekResimleri/" . $YeniFotografAdi,$jpeg_quality);

olan kısmında Jpeg quality olarak 0 dan 100 e kadar değer alıyor. PNG quality ayarları ise 0 dan 9 a kadar oluyor. değeri 9 yapınca çözüldür. Çok teşekkürler cevaplar için. İyi günler.
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al