Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
bioshock

Redimensionamento (Thumbnails) {resolvido}

Recommended Posts

bioshock

Uso a seguinte função para redimensionar:

<?php 
// Variables
$filename = $_FILES['imagem']['name'];
$newfilename = "Thumbnail_";
$path = "c:/wamp/www/Produtos/images/";  
$newwidth = 150;
$newheight = 150;

//IMAGE RESIZE FUNCTION FOLLOW ABOVE DIRECTIONS 
  function makeimage($filename, $newfilename, $path, $newwidth, $newheight) { 

    //SEARCHES IMAGE NAME STRING TO SELECT EXTENSION (EVERYTHING AFTER . ) 
    $image_type = strstr($filename,  '.'); 

    //SWITCHES THE IMAGE CREATE FUNCTION BASED ON FILE EXTENSION 
        switch($image_type) { 
            case '.jpg': 
                $source = imagecreatefromjpeg($filename); 
                break; 
            case '.png': 
                $source = imagecreatefrompng($filename); 
                break; 
            case '.gif': 
                $source = imagecreatefromgif($filename); 
                break; 
            default: 
                echo("Error Invalid Image Type"); 
                die; 
                break; 
            } 
     
    //CREATES THE NAME OF THE SAVED FILE 
    $file = $newfilename . $filename; 
     
    //CREATES THE PATH TO THE SAVED FILE 
    $fullpath = $path . $file; 

    //FINDS SIZE OF THE OLD FILE 
    list($width,  $height) = getimagesize($filename); 

    //CREATES IMAGE WITH NEW SIZES 
    $thumb = imagecreatetruecolor($newwidth,  $newheight); 

    //RESIZES OLD IMAGE TO NEW SIZES 
    imagecopyresized($thumb,  $source,  0,  0,  0,  0,  $newwidth,  $newheight,  $width,  $height); 

    //SAVES IMAGE AND SETS QUALITY || NUMERICAL VALUE = QUALITY ON SCALE OF 1-100 
    imagejpeg($thumb,  $fullpath,  75); 

    //CREATING FILENAME TO WRITE TO DATABSE 
    $filepath = $fullpath; 
     
    //RETURNS FULL FILEPATH OF IMAGE ENDS FUNCTION 
    return $filepath; 

} 


?>

Depois, chamo a função neste código:

<?php 

//This is the directory where images will be saved
$target = "c:/wamp/www/Produtos/images/";
$target = $target . basename( $_FILES['imagem']['name']);
if($_FILES['imagem']['size'] > 1000000 )
{
die ("error");
}
if(!getimagesize($_FILES['imagem']['tmp_name'])){ 
echo "<script>alert('Escolha um ficheiro do tipo imagem'); window.location=\"registoprodutos2.php\"</script>";
exit();
}

list($width, $height, $attr) = getimagesize($_FILES['imagem']['tmp_name']);
if ($width < 100 || $height < 100)
{
echo "Correcto";
exit();
}

//This gets all the other information from the form
$nome=$_POST['nome'];
$descricao=$_POST['descricao'];
$referencia=$_POST['referencia'];
$preco=$_POST['preco'];
$promocao=$_POST['promocao'];
$pic=($_FILES['imagem']['name']);
$categoria=$_POST['categoria'];

// Connects to your Database
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("teste2") or die(mysql_error()) ;


// If the button of form is clicked then we will insert all the stuff in our DataBase
if (isset($_POST['upload'])) {
// Here we verify that requireds textfields aren't emptys
if (empty($_POST['nome']) || empty($_POST['descricao']) || empty($_POST['preco']) || empty($_POST['promocao']) || empty($_POST['referencia']) || empty($_FILES['imagem'])) {

// If they're empty, then we put a message to alert the user	
	echo "<script>alert('Por favor preencha todos os campos obrigatórios(*)'); window.location=\"registoprodutos2.php\"</script>";

				// Verifying if exists user or not
	 }else{
$nome2 = $_POST['nome'];
$userCheck = mysql_query("SELECT nome FROM produtos WHERE nome='$nome2'");
if(mysql_num_rows($userCheck) !== 0) {
echo "<script>alert('Já existe o nome desse produto, por favor escolha outro!'); window.location=\"registoprodutos2.php\"</script>";
}else{
//Writes the information to the database
mysql_query("INSERT INTO produtos (nome, descricao, referencia, preco, promocao, imagem, categoria)
VALUES ('$nome', '$descricao', '$referencia', '$preco', '$promocao', '$pic', '$categoria')") ;}
echo "<script>alert('Registado com sucesso!'); window.location=\"registoprodutos2.php\"</script>";
//Writes the photo to the server
if(move_uploaded_file($_FILES['imagem']['tmp_name'], $target)){

//Tells you if its all ok
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
makeimage($filename, $newfilename, $path, $newwidth, $newheight);

}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
	 }
}

?>

De certa forma, este código funciona, o problema é que o thumbnail fica todo preto..ou seja, o thumbnail é criado, mas a imagem não aparece, o que aparece é um quadrado todo preto. Alguém sabe do que se pode tratar?

Share this post


Link to post
Share on other sites
bioshock

Bem, já vi que o problema está no imagecreatetruecolor, mas de que forma é que posso dar a volta a este problema?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. 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.