Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bioshock

Redimensionamento (Thumbnails) {resolvido}

Mensagens Recomendadas

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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.