Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcosfj1

Enviar imagem PNG, apareceu o fundo

Recommended Posts

Ai galera seguite tenho um sisteminha de upload q funciona tudo OK, ai agora alem de enviar JPG vai enviar imagens no formato PNG, beleza fiz as alteraçoes necessarias e deu certo a imagem foi enviada, porem no site ela apareceu com um fundo preto....alguem tem ideia do pq isso?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostre o código ...

 

 

Nao tem mto o q mostrar do codigo, por isso nao mandei, mas seria isso

preg_match("/\.(gif|bmp|swf|png|jpg|jpeg|png){1}$/i", strtolower($_FILES['imagem']['name'][$i]), $ext);	

				//
				if ($ext[0] == '.jpg' or $ext[0] == '.jpeg' or $ext[0] == '.png') {

 

Depois daqui onde faço a verificação da extençao da imagem eu adiciono ela e tal....e esta funcionando o problema é q ela aparece com fundo preto, mesmo nao tendo fundo, afinal ela é PNG

Compartilhar este post


Link para o post
Compartilhar em outros sites

você faz um redimensionamento da imagem ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você faz um redimensionamento da imagem ?

 

Olha cara nao fui eu q fiz, pq era antes um outro programador, mas ele faz sim o redimensionamento da imagem sim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o código que faz o redimensionamento da imagem?

 

Carlos Eduardo

 

 

Vou procurar aqui e já coloco....Mas o redimensionamento da imagem tem algo haver com isso do fundo preto???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas o redimensionamento da imagem tem algo haver com isso do fundo preto???

Depende de como está sendo feito. Se você está usando a biblioteca GD para fazer este redimensionamento e utilizando as funções para jpg em arquivos .png, provavelmente seja a causa do problema.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara dei uma olhada aqui nas paginas e achei dois arquivos que fazem referencia a isso de GD, mas nao sei nem o q esta acontecendo pq nunca tinha trabalhado com isso, vou te mandar as duas para você olhar

 

Primeira - Um pagina chamada _captcha.php

<?php

//
session_start();

/*
* File: CaptchaSecurityImages.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 03/08/06
* Updated: 07/02/07
* Requirements: PHP 4/5 with GD and FreeType libraries
* Link: http://www.white-hat-web-design.co.uk/articles/php-captcha.php
* 
* This program is free software; you can redistribute it and/or 
* modify it under the terms of the GNU General Public License 
* as published by the Free Software Foundation; either version 2 
* of the License, or (at your option) any later version.
* 
* This program is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
* GNU General Public License for more details: 
* http://www.gnu.org/licenses/gpl.html
*
*/

class CaptchaSecurityImages {

var $font = 'imagem/monofont.ttf';

function generateCode($characters) {
	/* list all possible characters, similar looking characters and vowels have been removed */
	$possible = '23456789bcdfghjkmnpqrstvwxyz';
	$code = '';
	$i = 0;
	while ($i < $characters) { 
		$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
		$i++;
	}
	return $code;
}

function CaptchaSecurityImages($width='120',$height='40',$characters='6') {
	$code = $this->generateCode($characters);
	/* font size will be 75% of the image height */
	$font_size = $height * 0.75;
	$image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream');
	/* set the colours */
	$background_color = imagecolorallocate($image, 255, 255, 255);
	$text_color = imagecolorallocate($image, 20, 40, 100);
	$noise_color = imagecolorallocate($image, 100, 120, 180);
	/* generate random dots in background */
	for( $i=0; $i<($width*$height)/3; $i++ ) {
		imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
	}
	/* generate random lines in background */
	for( $i=0; $i<($width*$height)/150; $i++ ) {
		imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
	}
	/* create textbox and add text */
	$textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function');
	$x = ($width - $textbox[4])/2;
	$y = ($height - $textbox[5])/2;
	imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');
	/* output captcha image to browser */
	header('Content-Type: image/jpeg');
	imagejpeg($image);
	imagedestroy($image);
	$_SESSION['security_code'] = $code;
}

}

//
$width = isset($_GET['width']) ? $_GET['width'] : '120';
$height = isset($_GET['height']) ? $_GET['height'] : '40';
$characters = isset($_GET['characters']) && $_GET['characters'] > 1 ? $_GET['characters'] : '6';

//
$captcha = new CaptchaSecurityImages($width,$height,$characters);

?>

 

 

Segunda um arquivo chamado - thumb.php

 

// Define quality of image
if ($_GET['q'])
	$arquivo_qualidade = $_GET['q'];
else
	$arquivo_qualidade = 85;

// Define size of image (maximum width or height)- if specified via get.
if ($_GET['size'])
	$thumb_size = intval($_GET['size']);

//
if (intval(@$_GET['w']) > 0) {

	//
	$thumb_size_x = intval($_GET['w']);

	//
	if (intval(@$_GET['h']) > 0) 
		$thumb_size_y = intval($_GET['h']);
	else
		$thumb_size_y = $thumb_size_x;

}

//
$arquivo = $parametro['url'].$_GET['arquivo'];

// extensao
preg_match("/\.(jpg|jpeg|gif|png){1}$/i", $arquivo, $ext);
$arquivo_extensao = strtolower($ext[0]);

//
$arquivo_cache = str_replace('//','/', $parametro['caminho_cache'].md5($arquivo.@$thumb_size.@$thumb_size_x.@$thumb_size_y.@$arquivo_qualidade).$arquivo_extensao);

// remove cached thumbnail
if ($_GET['nocache'])
	if (file_exists($arquivo_cache))
		unlink($arquivo_cache);

// exibe arquivo que esta no cache
if ((file_exists($arquivo_cache)) && (@filemtime($arquivo_cache) > @filemtime($arquivo))) {

	//
	header('Content-type: image/'.$arquivo_extensao);
	header("Expires: Mon, 26 Jul 2030 05:00:00 GMT");    
	header('Content-Disposition: inline; filename = '.str_replace('/','', md5($arquivo.$thumb_size.$thumb_size_x.$thumb_size_y.$arquivo_qualidade).$arquivo_extensao));
	echo (join('', file( $arquivo_cache )));
	exit; // no need to create thumbnail - it already exists in the cache

}

// determine php and gd versions
$ver = intval(str_replace(".","",phpversion()));
if ($ver >= 430)
	$gd_version = @gd_info();

//
switch ($arquivo_extensao) {

	//
	case '.jpg': // JPG

		//
		if (!$imagem = imagecreatefromjpeg($arquivo))
			if (file_exists($arquivo_cache))
				unlink($arquivo_cache);


	break;

	//
	case '.png': // PNG

		//
		if (!$imagem = imagecreatefrompng($arquivo))
			if (file_exists($arquivo_cache))
				unlink($arquivo_cache);

	break;

	//
	case '.gif': // GIF 

		//
		if (!$imagem = imagecreatefromgif($arquivo))
			if (file_exists($arquivo_cache))
				unlink($arquivo_cache);

	break;

}

// define size of original image	
$imagem_width = imagesx($imagem);
$imagem_height = imagesy($imagem);

/*------------------------------------------ define size of the thumbnail	
----------------------------------------------------------------------------*/
if (@$thumb_size_x > 0) {

	// define images x AND y
	$thumb_width = $thumb_size_x;
	$factor = $imagem_width/$thumb_size_x;
	$thumb_height = intval($imagem_height / $factor); 

	//
	if ($thumb_height > $thumb_size_y) {
		$thumb_height = $thumb_size_y; 
		$factor = $imagem_height/$thumb_size_y;
		$thumb_width = intval($imagem_width / $factor); 
	}

} else {

	// define images x OR y
	$thumb_width = $thumb_size; 
	$factor = $imagem_width/$thumb_size;
	$thumb_height = intval($imagem_height / $factor); 

	//
	if ($thumb_height > $thumb_size) {
		$thumb_height = $thumb_size; 
		$factor = $imagem_height/$thumb_size;
		$thumb_width = intval($imagem_width / $factor); 
	}

}

/*------------------------------------------ create the thumbnail
--------------------------------------------------------------------*/
if ($imagem_width < 4000)	//no point in resampling images larger than 4000 pixels wide - too much server processing overhead - a resize is more economical
	if (substr_count(strtolower($gd_version['GD Version']), "2.") > 0) {
		//GD 2.0 
		$thumbnail = imagecreatetruecolor($thumb_width, $thumb_height);
		imagecopyresampled($thumbnail, $imagem, 0, 0, 0, 0, $thumb_width, $thumb_height, $imagem_width, $imagem_height);
	} else {
		//GD 1.0 
		$thumbnail = imagecreate($thumb_width, $thumb_height);
		imagecopyresized($thumbnail, $imagem, 0, 0, 0, 0, $thumb_width, $thumb_height, $imagem_width, $imagem_height);			
	}	

else
	if (substr_count(strtolower($gd_version['GD Version']), "2.") > 0) {
		// GD 2.0 
		$thumbnail = imagecreatetruecolor($thumb_width, $thumb_height);
		imagecopyresized($thumbnail, $imagem, 0, 0, 0, 0, $thumb_width, $thumb_height, $imagem_width, $imagem_height);
	} else {
		// GD 1.0 
		$thumbnail = imagecreate($thumb_width, $thumb_height);
		imagecopyresized($thumbnail, $imagem, 0, 0, 0, 0, $thumb_width, $thumb_height, $imagem_width, $imagem_height);
	}

/*-------------------------------------------- inserir texto na imagem
------------------------------------------------------------------------*/
if ($parametro['imagem_texto'] and $_GET['texto']) {

	//
	$black = imagecolorallocate($thumbnail, 200, 200, 200);
	imagestring($thumbnail, 5, 20, $thumb_height-19, $parametro['imagem_texto'], $black);

}

/*------------------------------------------------------------
---------------------------------------------------------------*/
switch ($arquivo_extensao) {

	//
	case '.jpg':	// JPG
		header('Content-type: image/jpeg');
		header('Content-Disposition: inline; filename = '.str_replace('/', '', md5($arquivo.$thumb_size.$thumb_size_x.$thumb_size_y.$arquivo_qualidade).$arquivo_extensao));
		@imagejpeg($thumbnail, $arquivo_cache, $arquivo_qualidade);
		imagejpeg($thumbnail, '', $arquivo_qualidade);
	break;

	//
	case '.png': // PNG
		header('Content-type: image/png');
		header('Content-Disposition: inline; filename = '.str_replace('/', '', md5($arquivo.$thumb_size.$thumb_size_x.$thumb_size_y.$arquivo_qualidade).$arquivo_extensao));
		@imagepng($thumbnail, $arquivo_cache);
		imagepng($thumbnail); 
	break;

	//
	case '.gif':	// GIF 

		//
		if (function_exists('imagegif')) {
			header('Content-type: image/gif');
			header('Content-Disposition: inline; filename = '.str_replace('/', '', md5($arquivo.$thumb_size.$thumb_size_x.$thumb_size_y.$arquivo_qualidade).$arquivo_extensao));
			@imagegif($thumbnail, $arquivo_cache);
			imagegif($thumbnail);  
		} else {
			header('Content-type: image/jpeg');
			header('Content-Disposition: inline; filename = '.str_replace('/', '', md5($arquivo.$thumb_size.$thumb_size_x.$thumb_size_y.$arquivo_qualidade).$arquivo_extensao));
			@imagejpeg($thumbnail, $arquivo_cache);
			imagejpeg($thumbnail); 
		}

	break;

}

//clear memory
imagedestroy($imagem);
imagedestroy($thumbnail);

 

Desculpa nao ter resumido ou tirado alguma parte, mas eu nao sei o que tem q olhar para me ajudar ai mandei tudo hehe

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.