Jump to content

Upload resize and convert images turn black help


cobusbo

Recommended Posts

Hi I have 3 files

 

profilepicf.php

<html>
<head>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="profilepic_new.php">
Choose your file here:
<input name="uploaded_file" type="file"/><br /><br />
<input type="submit" value="Upload It"/>
</form>
</body>
</html>

profilepic_new.php

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/chat2/chat_code_header.php';
$ip = $_SERVER["HTTP_X_MXIT_USERID_R"];
if(!isset($ip))
{
	$ip = "Debater";
}



$result9 = mysql_query("SELECT * FROM Users2 WHERE mxitid = \"$ip\"");
        $row = mysql_fetch_array($result9);
$id = $row['ID'];

// Access the $_FILES global variable for this specific file being uploaded
// and create local PHP variables from the $_FILES array of information
$fileName = $_FILES["uploaded_file"]["name"]; // The file name
$fileTmpLoc = $_FILES["uploaded_file"]["tmp_name"]; // File in the PHP tmp folder
$fileType = $_FILES["uploaded_file"]["type"]; // The type of file it is
$fileSize = $_FILES["uploaded_file"]["size"]; // File size in bytes
$fileErrorMsg = $_FILES["uploaded_file"]["error"]; // 0 for false... and 1 for true
$fileName = preg_replace('#[^a-z.0-9]#i', '', $fileName); // filter the $filename


$kaboom = explode(".", $fileName); // Split file name into an array using the dot
$fileExt = end($kaboom); // Now target the last array element to get the file extension

// START PHP Image Upload Error Handling --------------------------------
if (!$fileTmpLoc) { // if file not chosen
    echo "ERROR: Please browse for a file before clicking the upload button.";
    exit();
} else if($fileSize > 5242880) { // if file size is larger than 5 Megabytes
    echo "ERROR: Your file was larger than 5 Megabytes in size.";
    unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
    exit();
} else if (!preg_match("/.(gif|jpg|png)$/i", $fileName) ) {
     // This condition is only if you wish to allow uploading of specific file types    
     echo "ERROR: Your image was not .gif, .jpg, or .png.";
     unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
     exit();
} else if ($fileErrorMsg == 1) { // if file upload error key is equal to 1
    echo "ERROR: An error occured while processing the file. Try again.";
    exit();
}
// END PHP Image Upload Error Handling ----------------------------------
// Place it into your "uploads" folder mow using the move_uploaded_file() function
$moveResult = move_uploaded_file($fileTmpLoc, "images/".$id.".".$fileExt);
// Check to make sure the move result is true before continuing
if ($moveResult != true) {
    echo "ERROR: File not uploaded. Try again.";
    exit();
}
// Include the file that houses all of our custom image functions
include_once("ak_php_img_lib_1.0.php");
// ---------- Start Universal Image Resizing Function --------
$target_file = "images/".$id.".".$fileExt;
$resized_file = "images/resized_".$id.".".$fileExt;
$wmax = 320;
$hmax = 240;
ak_img_resize($target_file, $resized_file, $wmax, $hmax, $fileExt);
unlink($target_file);
// ----------- End Universal Image Resizing Function ----------
// ---------- Start Convert to JPG Function --------
if (strtolower($fileExt) != "jpg") {
    $target_file = "images/resized_".$id.".".$fileExt;
    $new_jpg = "images/resized_".$id.".jpg";
    ak_img_convert_to_jpg($target_file, $new_jpg, $fileExt);
unlink($target_file);

}
    $new_jpg = "images/resized_".$id.".jpg";

if(!get_magic_quotes_gpc())
{
    $new_jpg = addslashes($new_jpg);
    $filePath = addslashes($filePath);
}


$result = mysql_query("UPDATE Users2 SET pprofilepic='$new_jpg', aprove='requested' WHERE mxitid='$ip'") 
or die(mysql_error());  

// ----------- End Convert to JPG Function -----------
// Display things to the page so you can see what is happening for testing purposes
echo "The file named <strong>$fileName</strong> uploaded successfuly.<br /><br />";
echo "It is <strong>$fileSize</strong> bytes in size.<br /><br />";
echo "It is an <strong>$fileType</strong> type of file.<br /><br />";
echo "The file extension is <strong>$fileExt</strong><br /><br />";
echo "The Error Message output for this upload is: $fileErrorMsg";






?>

ak_php_img_lib_1.0.php

<?php
// ----------------------- RESIZE FUNCTION -----------------------
// Function for resizing any jpg, gif, or png image files
function ak_img_resize($target, $newcopy, $w, $h, $ext) {
    list($w_orig, $h_orig) = getimagesize($target);
    $scale_ratio = $w_orig / $h_orig;
    if (($w / $h) > $scale_ratio) {
           $w = $h * $scale_ratio;
    } else {
           $h = $w / $scale_ratio;
    }
    $img = "";
    $ext = strtolower($ext);
    if ($ext == "gif"){ 
    $img = imagecreatefromgif($target);
    } else if($ext =="png"){ 
    $img = imagecreatefrompng($target);
    } else { 
    $img = imagecreatefromjpeg($target);
    }
    $tci = imagecreatetruecolor($w, $h);
    // imagecopyresampled(dst_img, src_img, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h)
    imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig);
    if ($ext == "gif"){ 
        imagegif($tci, $newcopy);
    } else if($ext =="png"){ 
        imagepng($tci, $newcopy);
    } else { 
        imagejpeg($tci, $newcopy, 84);
    }
}
// ---------------- THUMBNAIL (CROP) FUNCTION ------------------
// Function for creating a true thumbnail cropping from any jpg, gif, or png image files
function ak_img_thumb($target, $newcopy, $w, $h, $ext) {
    list($w_orig, $h_orig) = getimagesize($target);
    $src_x = ($w_orig / 2) - ($w / 2);
    $src_y = ($h_orig / 2) - ($h / 2);
    $ext = strtolower($ext);
    $img = "";
    if ($ext == "gif"){ 
    $img = imagecreatefromgif($target);
    } else if($ext =="png"){ 
    $img = imagecreatefrompng($target);
    } else { 
    $img = imagecreatefromjpeg($target);
    }
    $tci = imagecreatetruecolor($w, $h);
    imagecopyresampled($tci, $img, 0, 0, $src_x, $src_y, $w, $h, $w, $h);
    if ($ext == "gif"){ 
        imagegif($tci, $newcopy);
    } else if($ext =="png"){ 
        imagepng($tci, $newcopy);
    } else { 
        imagejpeg($tci, $newcopy, 84);
    }
}
// ------------------ IMAGE CONVERT FUNCTION -------------------
// Function for converting GIFs and PNGs to JPG upon upload
function ak_img_convert_to_jpg($target, $newcopy, $ext) {
    list($w_orig, $h_orig) = getimagesize($target);
    $ext = strtolower($ext);
    $img = "";
    if ($ext == "gif"){ 
        $img = imagecreatefromgif($target);
    } else if($ext =="png"){ 
        $img = imagecreatefrompng($target);
    }
    $tci = imagecreatetruecolor($w_orig, $h_orig);
    imagecopyresampled($tci, $img, 0, 0, 0, 0, $w_orig, $h_orig, $w_orig, $h_orig);
    imagejpeg($tci, $newcopy, 84);
}
?>

 

The problem I'm currently experiencing is when I try to upload PNG files, I get a black image and an error message while uploading it

 

 

Warning: imagecreatefrompng(): 'images/8.png' is not a valid PNG file in /home/u342037492/public_html/chat2/profile/ak_php_img_lib_1.0.php on line 17

 
Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in /home/u342037492/public_html/chat2/profile/ak_php_img_lib_1.0.php on line 23

Any help related to this problem please

$img (the second parameter in imagecopyresampled) is false because of the first error message - not a valid png file.

This is the image I tried to upload attached

 

how should I go on fixing the problem because it seems all png files bigger than 100kb end up being black after the resizing aswell

post-141539-0-59949200-1439659338_thumb.png

Try processing it as if it were a jpeg file. That worked for me after downloading

Isn't there a way to change the file type to the right one before processing it? because doing it manually is a pain?

getimagesize

 

returns array like

Array
(
    [0] => 800
    [1] => 1280
    [2] => 2
    [3] => width="800" height="1280"
    [bits] => 8
    [channels] => 3
    [mime] => image/jpeg
)

use the mime type instead of relying on the file extesion

getimagesize

 

returns array like

Array
(
    [0] => 800
    [1] => 1280
    [2] => 2
    [3] => width="800" height="1280"
    [bits] => 8
    [channels] => 3
    [mime] => image/jpeg
)

use the mime type instead of relying on the file extesion

I used my file Ext with this function all seems to be working fine now thank you

$imageTypeArray = array
    (
        0=>'UNKNOWN',
        1=>'GIF',
        2=>'JPEG',
        3=>'PNG',
        4=>'SWF',
        5=>'PSD',
        6=>'BMP',
        7=>'TIFF_II',
        8=>'TIFF_MM',
        9=>'JPC',
        10=>'JP2',
        11=>'JPX',
        12=>'JB2',
        13=>'SWC',
        14=>'IFF',
        15=>'WBMP',
        16=>'XBM',
        17=>'ICO',
        18=>'COUNT'  
    );
    
    $size = getimagesize($filename);
    
    $size[2] = $imageTypeArray[$size[2]];

My new file looks like

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/chat2/chat_code_header.php';
$ip = $_SERVER["HTTP_X_MXIT_USERID_R"];
if(!isset($ip))
{
	$ip = "Debater";
}



$result9 = mysql_query("SELECT * FROM Users2 WHERE mxitid = \"$ip\"");
        $row = mysql_fetch_array($result9);
$id = $row['ID'];

// Access the $_FILES global variable for this specific file being uploaded
// and create local PHP variables from the $_FILES array of information
$fileName = $_FILES["uploaded_file"]["name"]; // The file name
$fileTmpLoc = $_FILES["uploaded_file"]["tmp_name"]; // File in the PHP tmp folder
$fileType = $_FILES["uploaded_file"]["type"]; // The type of file it is
$fileSize = $_FILES["uploaded_file"]["size"]; // File size in bytes
$fileErrorMsg = $_FILES["uploaded_file"]["error"]; // 0 for false... and 1 for true
$fileName = preg_replace('#[^a-z.0-9]#i', '', $fileName); // filter the $filename


$kaboom = explode(".", $fileName); // Split file name into an array using the dot




 $imageTypeArray = array
    (
        0=>'UNKNOWN',
        1=>'GIF',
        2=>'JPEG',
        3=>'PNG',
        4=>'SWF',
        5=>'PSD',
        6=>'BMP',
        7=>'TIFF_II',
        8=>'TIFF_MM',
        9=>'JPC',
        10=>'JP2',
        11=>'JPX',
        12=>'JB2',
        13=>'SWC',
        14=>'IFF',
        15=>'WBMP',
        16=>'XBM',
        17=>'ICO',
        18=>'COUNT'  
    );
    
    $size = getimagesize($fileTmpLoc);
    
    $size[2] = $imageTypeArray[$size[2]];















$fileExt = $size[2]; // Now target the last array element to get the file extension


// START PHP Image Upload Error Handling --------------------------------
if (!$fileTmpLoc) { // if file not chosen
    echo "ERROR: Please browse for a file before clicking the upload button.";
    exit();
} else if($fileSize > 5242880) { // if file size is larger than 5 Megabytes
    echo "ERROR: Your file was larger than 5 Megabytes in size.";
    unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
    exit();
} else if (!preg_match("/.(gif|jpg|png)$/i", $fileName) ) {
     // This condition is only if you wish to allow uploading of specific file types    
     echo "ERROR: Your image was not .gif, .jpg, or .png.";
     unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
     exit();
} else if ($fileErrorMsg == 1) { // if file upload error key is equal to 1
    echo "ERROR: An error occured while processing the file. Try again.";
    exit();
}
// END PHP Image Upload Error Handling ----------------------------------
// Place it into your "uploads" folder mow using the move_uploaded_file() function
$moveResult = move_uploaded_file($fileTmpLoc, "images/".$id.".".$fileExt);
// Check to make sure the move result is true before continuing
if ($moveResult != true) {
    echo "ERROR: File not uploaded. Try again.";
    exit();
}
// Include the file that houses all of our custom image functions
include_once("ak_php_img_lib_1.0.php");
// ---------- Start Universal Image Resizing Function --------
$target_file = "images/".$id.".".$fileExt;
$resized_file = "images/resized_".$id.".".$fileExt;
$wmax = 320;
$hmax = 240;
ak_img_resize($target_file, $resized_file, $wmax, $hmax, $fileExt);
unlink($target_file);
// ----------- End Universal Image Resizing Function ----------
// ---------- Start Convert to JPG Function --------
if (strtolower($fileExt) != "jpg") {
    $target_file = "images/resized_".$id.".".$fileExt;
    $new_jpg = "images/resized_".$id.".jpg";
    ak_img_convert_to_jpg($target_file, $new_jpg, $fileExt);
unlink($target_file);

}
    $new_jpg = "images/resized_".$id.".jpg";

if(!get_magic_quotes_gpc())
{
    $new_jpg = addslashes($new_jpg);
    $filePath = addslashes($filePath);
}


$result = mysql_query("UPDATE Users2 SET pprofilepic='$new_jpg', aprove='requested' WHERE mxitid='$ip'") 
or die(mysql_error());  

// ----------- End Convert to JPG Function -----------
// Display things to the page so you can see what is happening for testing purposes
echo "The file named <strong>$fileName</strong> uploaded successfuly.<br /><br />";
echo "It is <strong>$fileSize</strong> bytes in size.<br /><br />";
echo "It is an <strong>$fileType</strong> type of file.<br /><br />";
echo "The file extension is <strong>$fileExt</strong><br /><br />";
echo "The Error Message output for this upload is: $fileErrorMsg";


if($result){
header('Location: ../profile/thankyou.php');
}
else {
echo "ERROR";
}

// close mysql
mysql_close();




?>

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.