PHP PNG Fotoğraf Upload, Transparanlık Sorunu // Yardım

Konu

#1
Herkese merhaba. png fotoğraf upload ederken transparanlık bozuluyor. internette araştırdım aşağıdaki kodları eklemem gerekiyormuş. Ancak php bilgim tam olmadığından beceremedim yardımcı olabilir misiniz? function kısmındaki img kodu kısmı ve sayfanın kodunu aşağıya ekliyorum

imagealphablending($NewCanves, false);
imagesavealpha($NewCanves, true);
imagealphablending($SrcImage, true);

PHP Kod:
//process image before uploading to server
function process_image ($source_url$destination_url$quality){
    $info getimagesize($source_url);
    if ($info['mime'] == 'image/jpeg'){
      $image imagecreatefromjpeg($source_url);
    }
    elseif ($info['mime'] == 'image/png'){
      $image imagecreatefrompng($source_url);
    }
    imagejpeg($image$destination_url$quality);
    return $destination_url;
    
}
?>
PHP Kod:
include("includes/xradio_header.php");
    include(
"includes/xradio_function.php");
    include(
"includes/xradio_msg.php");

    
$url_action="";
    if(isset(
$_GET['action'])){
        
$action=$_GET['action'];
        if(
$action=="add"){
            if(isset(
$_POST['submit'])){
                if(
$_FILES['genre_img']['name']!=""){
                    
$genre_image="genre_".rand(0,99999)."_".$_FILES['genre_img']['name'];
                    
$tpath1='uploads/genres/'.$genre_image;
                    
$pic1=process_image($_FILES["genre_img"]["tmp_name"], $tpath1100);
                }
                
$data = array(
                    
'name'  =>  $_POST['genre_name'],
                    
'img'  => $genre_image
                
);
                
$qry insert_tbl('genres',$data);
                
$_SESSION['msg']="6";
                
header"Location:x_add_genre.php?action=add");
                exit;
            }
        }
        elseif(
$action=="delete_image"){
            
$genre_id=$_GET['id'];
            
$img_res=mysqli_query($mysqli,"SELECT * FROM genres WHERE id=$genre_id");
            
$img_res_row=mysqli_fetch_assoc($img_res);
            if(
$img_res_row['img']!=""){
                
unlink('uploads/genres/'.$img_res_row['img']);
                
$data = array(
                    
'img'  => ""
                
);
                
update_tbl('genres'$data"WHERE id = $genre_id");
                
header"Location:x_add_genre.php?action=edit&id=".$genre_id);
                exit;
            }
        }
        elseif(
$action=="edit"){
            if(isset(
$_POST['submit']) and isset($_POST['genre_id'])){
                
$genre_id=$_POST['genre_id'];
                
$genre_name=$_POST['genre_name'];
                
$genre_name=str_replace("'","\'",$genre_name);

                
$genre_image="";
                
$img_res=mysqli_query($mysqli,"SELECT * FROM genres WHERE id=$genre_id");
                
$img_res_row=mysqli_fetch_assoc($img_res);
                if(
$img_res_row['img']!=""){
                    
$genre_image=$img_res_row['img'];
                }
                
//check delete old image
                
if($_FILES['genre_img']['name']!=""){
                    if(
$genre_image!=""){
                        
unlink('uploads/genres/'.$genre_image);
                    }
                    
//put new image
                    
$genre_image="genre_".rand(0,99999)."_".$_FILES['genre_img']['name'];
                    
$tpath1='uploads/genres/'.$genre_image;
                    
$pic1=process_image($_FILES["genre_img"]["tmp_name"], $tpath1100);
                }
                if(
$genre_image!=""){
                    
$data = array(
                        
'name'  =>  $genre_name,
                        
'img'  => $genre_image
                    
);
                }
                else{
                    
$data = array(
                        
'name'  =>  $genre_name,
                        
'img'  => ''
                    
);
                }
                
update_tbl('genres'$data"WHERE id = $genre_id");
                
$_SESSION['msg']="7";
                
header("Location:x_add_genre.php?action=edit&id=".$genre_id);
                exit;
            }
            
$genre_id=$_GET['id'];
            
$qry="SELECT * FROM genres where id=$genre_id";
            
$result=mysqli_query($mysqli,$qry);
            
$row=mysqli_fetch_assoc($result);
        }
        elseif(
$action=="copy"){
            
$genre_id=$_GET['id'];
            
$qry="SELECT * FROM genres where id=$genre_id";
            
$result=mysqli_query($mysqli,$qry);
            
$row=mysqli_fetch_assoc($result);
            
$url_action="x_add_genre.php?action=add";
        }
    }
?>
Cevapla
#2
imagejpeg($image, $destination_url, $quality);
kısmı
imagepng($image, $destination_url, $quality);
olarak değiştirin ek olarak normalde bu fonksiyonlar resim oluşturmak için kullanılır resim yüklemek için değil basit sade upload yazarım isterseniz gelişmiş ajaxlı upload sistemi isterseniz ücretli yapabilirim.
Cevapla
#3
(16-08-2021, 02:23)Friday Adlı Kullanıcıdan Alıntı: imagejpeg($image, $destination_url, $quality);
kısmı
    imagepng($image, $destination_url, $quality);
olarak değiştirin ek olarak normalde bu fonksiyonlar resim oluşturmak için kullanılır resim yüklemek için değil basit sade upload yazarım isterseniz gelişmiş ajaxlı upload sistemi isterseniz ücretli yapabilirim.
imagepng şeklinde yapınca dosyayı yüklüyor ancak bozuk yüklüyor ve fotoğraf görüntülenemiyor

Ayrıyetten transparanlığın bozulmasının sebebi nedir tam olarak?
Son Düzenleme: 16-08-2021, 03:00, Düzenleyen: nexogaming.
Cevapla
#4
(16-08-2021, 02:46)nexogaming Adlı Kullanıcıdan Alıntı:
(16-08-2021, 02:23)Friday Adlı Kullanıcıdan Alıntı: imagejpeg($image, $destination_url, $quality);
kısmı
    imagepng($image, $destination_url, $quality);
olarak değiştirin ek olarak normalde bu fonksiyonlar resim oluşturmak için kullanılır resim yüklemek için değil basit sade upload yazarım isterseniz gelişmiş ajaxlı upload sistemi isterseniz ücretli yapabilirim.
imagepng şeklinde yapınca dosyayı yüklüyor ancak bozuk yüklüyor ve fotoğraf görüntülenemiyor

Ayrıyetten transparanlığın bozulmasının sebebi nedir tam olarak?

transparanlığın bozulmasının sebebi resmi kontrol etmişsiniz jpegmi pngmi diye ama resmi oluştururken imagejpeg yani jpg formatında yüklemesini söylemişsiniz.
function process_image ($source_url, $destination_url, $quality){
$info = getimagesize($source_url);
if ($info['mime'] == 'image/jpeg'){
$image = imagecreatefromjpeg($source_url);
imagejpeg($image, $destination_url, $quality);
}
elseif ($info['mime'] == 'image/png'){
$image = imagecreatefrompng($source_url);
imagepng($image, $destination_url, $quality);
}

return $destination_url;

}
İsterseniz bunuda kullanabilirsiniz ;
PHP Kod:
<?php
if (@$_FILES['file']){
    
$klasor 'test/';
    
$dosya_adi $klasor.rand(1,999)."-".$_FILES['file']['name'];
    
$uzanti $_FILES['file']['type'];
    if (
$uzanti != "image/png" && $uzanti != "image/jpeg") {
        echo 
"Sadece png ve jpg yükleyebilirsiniz<br>"."Yüklediğiniz Dosya Adı:".$_FILES['file']['name']."<br>Yüklediğiniz Dosyanın Boyutu".$_FILES['file']['size']."<br>Yüklediğiniz Dosyanın MIME Tipi :".$_FILES['file']['type'];
    }else {
        
$check move_uploaded_file($_FILES['file']['tmp_name'], $dosya_adi);
        echo 
"Dosya Başarıyla Yüklendi.<br><span style='color:red;'>Dosya Bilgileri :</span> <br>Yüklediğin Dosya Adı : ".$_FILES['file']['name']."<br>Yüklediğin Dosyanın Boyutu : ".$_FILES['file']['size']."<br>Yüklediğiniz Dosyanın MIME Tipi : ".$_FILES['file']['type'];
    }
}

?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Webailesi.Com Basit Upload</title>
</head>
<body>
<form enctype="multipart/form-data" action="" method="POST">
    <input type="FILE" name="file">
    <input type="submit" name="" value="Gönder">
</form>
</body>
</html> 
Cevapla
#5
(16-08-2021, 14:05)Friday Adlı Kullanıcıdan Alıntı:
(16-08-2021, 02:46)nexogaming Adlı Kullanıcıdan Alıntı: imagepng şeklinde yapınca dosyayı yüklüyor ancak bozuk yüklüyor ve fotoğraf görüntülenemiyor

Ayrıyetten transparanlığın bozulmasının sebebi nedir tam olarak?

transparanlığın bozulmasının sebebi resmi kontrol etmişsiniz jpegmi pngmi diye ama resmi oluştururken imagejpeg yani jpg formatında yüklemesini söylemişsiniz.
function process_image ($source_url, $destination_url, $quality){
    $info = getimagesize($source_url);
    if ($info['mime'] == 'image/jpeg'){
      $image = imagecreatefromjpeg($source_url);
      imagejpeg($image, $destination_url, $quality);
    }
    elseif ($info['mime'] == 'image/png'){
      $image = imagecreatefrompng($source_url);
      imagepng($image, $destination_url, $quality);
    }
   
    return $destination_url;
   
}
İsterseniz bunuda kullanabilirsiniz ;
PHP Kod:
<?php
if (@$_FILES['file']){
    
$klasor 'test/';
    
$dosya_adi $klasor.rand(1,999)."-".$_FILES['file']['name'];
    
$uzanti $_FILES['file']['type'];
    if (
$uzanti != "image/png" && $uzanti != "image/jpeg") {
        echo 
"Sadece png ve jpg yükleyebilirsiniz<br>"."Yüklediğiniz Dosya Adı:".$_FILES['file']['name']."<br>Yüklediğiniz Dosyanın Boyutu".$_FILES['file']['size']."<br>Yüklediğiniz Dosyanın MIME Tipi :".$_FILES['file']['type'];
    }else {
        
$check move_uploaded_file($_FILES['file']['tmp_name'], $dosya_adi);
        echo 
"Dosya Başarıyla Yüklendi.<br><span style='color:red;'>Dosya Bilgileri :</span> <br>Yüklediğin Dosya Adı : ".$_FILES['file']['name']."<br>Yüklediğin Dosyanın Boyutu : ".$_FILES['file']['size']."<br>Yüklediğiniz Dosyanın MIME Tipi : ".$_FILES['file']['type'];
    }
}

?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Webailesi.Com Basit Upload</title>
</head>
<body>
<form enctype="multipart/form-data" action="" method="POST">
    <input type="FILE" name="file">
    <input type="submit" name="" value="Gönder">
</form>
</body>
</html> 

Yine Aynı sorun devam ediyor, fotoğraf düzgün yüklenmedi. Alttaki gibi bir kod dizini buldum uyarladım. Burada arka planını beyaz yapıyor. bunu editleyip transparan olarak yüklemesini sağlayabilir miyiz?

ayrıyetten hazır bir panel olduğundan upload kodlarını ellemek istemiyorum, çünkü alakalı bir çok kod var diye düşünüyorum.

PHP Kod:
function process_image ($source_url$destination_url$quality){
$info getimagesize($source_url);

$w $info[0];
$h $info[1];

if (
$info['mime'] == 'image/jpeg'){
$image imagecreatefromjpeg($source_url);
imagejpeg($image$destination_url$quality);
}
elseif (
$info['mime'] == 'image/png'){
$image imagecreatefrompng($source_url);

$image_p imagecreatetruecolor($w$h);
$white imagecolorallocate($image_p0xFF0xFF0xFF);
imagealphablending($image_pfalse);
imagesavealpha($image_ptrue);
imagefill($image_p00$white);
imagealphablending($image_ptrue);
imagecopyresampled($image_p$image0000$w$h$w$h);
imagejpeg($image_p$destination_url$quality);
}

return 
$destination_url;

}
?>
Cevapla
#6
function process_image ($source_url, $destination_url, $quality){
$info = getimagesize($source_url);

$w = $info[0];
$h = $info[1];

if ($info['mime'] == 'image/jpeg'){
$image = imagecreatefromjpeg($source_url);
imagejpeg($image, $destination_url, $quality);
}
elseif ($info['mime'] == 'image/png'){
$image = imagecreatefrompng($source_url);

$image_p = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($image_p, 0xFF, 0xFF, 0xFF);
$transparent= imagecolorallocatealpha($image_p, 0, 0, 0, 127);
imagealphablending($image_p, false);
imagesavealpha($image_p, true);
imagefill($image_p, 0, 0, $transparent);
imagealphablending($image_p, true);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $w, $h, $w, $h);
imagejpeg($image_p, $destination_url, $quality);
}

return $destination_url;

}
Değiştirin denemedim ama işe yaraması gerek.
Son Düzenleme: 17-08-2021, 22:07, Düzenleyen: Friday.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Benzer Konular

Task
Kayıt Ol