Ir para conteúdo

POWERED BY:

Arquivado

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

Dexter Morgan

[Resolvido] Funcao Thumb resize

Recommended Posts

tenho esse código

 

<?php

ini_set("memory_limit","1000M");
ini_set('allow_url_fopen', 'on');
$MaxLarg = $largura = $_GET["x"] != ''?$_GET["x"]:'';
$MaxAlt = $altura = $_GET["y"] != ''?$_GET["y"]:'';
$tb_x = $_GET["tb_x"] != ''?$_GET["tb_x"]:'';
$tb_y = $_GET["tb_y"] != ''?$_GET["tb_y"]:'';
$foto = $_GET["img"];
$Ext = substr($foto,-4);
if(strtoupper($Ext) == ".JPG"){
$ExtFunc = "jpeg";
}
elseif(strtoupper($Ext) == ".GIF"){
$ExtFunc = "gif";
}
elseif(strtoupper($Ext) == ".PNG"){
$ExtFunc = "png";
}
$CriarImagemDe = "imagecreatefrom" . $ExtFunc;
$img = $img_origem = $CriarImagemDe($foto);
$numWdt = $origX = imagesx($img_origem);
$numHgt = $origY = imagesy($img_origem);
if($largura != '' && $altura != ''){
if(($tb_x == '' && $tb_y == '') || ($tb_x == 0 && $tb_y == 0)){
if( ($MaxLarg > $numWdt) && ($MaxAlt > $numHgt) ){
$nova = $img_origem;
$width = $numWdt;
$height = $numHgt;
}
else{
$areanova = $MaxLarg*$MaxAlt;
$largarea = $MaxAlt * $numWdt;
$altarea = $MaxLarg * $numHgt;
$maxlargarea = $areanova / $largarea;
$maxaltarea = $areanova / $altarea;
if($maxlargarea > $maxaltarea){
$width = $maxlargarea*$numWdt;
$height = $maxlargarea*$numHgt;
}
else{
$width = $maxaltarea*$numWdt;
$height = $maxaltarea*$numHgt;
};
$nova = imagecreatetruecolor($width,$height);
imagesavealpha($nova, true);
$trans_colour = imagecolorallocatealpha($nova, 0, 0, 0, 127);
imagefill($nova, 0, 0, $trans_colour);
imagecopyresampled($nova, $img_origem, 0,0,0,0,$width,$height,$numWdt-1,$numHgt);
};
if($width > $MaxLarg){
$nx = ($width-$MaxLarg)/2;
}
else{
$nx = 0;
}
if($height < $MaxAlt){
$ny = ($height-$MaxAlt)/2;
}
else{
$ny = 0;
}
$i = imagecreatetruecolor($MaxLarg,$MaxAlt);
imagesavealpha($i, true);
$trans_colour = imagecolorallocatealpha($i, 0, 0, 0, 127);
imagefill($i, 0, 0, $trans_colour);
imagecopy($i, $nova, 0, 0, $nx, $ny,$MaxLarg,$MaxAlt);
}
else{
$destX = $largura;
$destY = $altura;
if($origY>$origX){
$porc = ($largura*100)/$origX;
$destY = $tamY = ($origY*$porc)/100;
if($destY<=$MaxAlt) $destY=$MaxAlt;
}
else{
$porc = ($altura*100)/$origY;
$destX = $tamX = ($origX*$porc)/100;
if($destX<=$MaxLarg) $destX=$MaxLarg;
}
$img_destino = imagecreatetruecolor($destX,$destY);
imagesavealpha($img_destino, true);
$trans_colour = imagecolorallocatealpha($img_destino, 0, 0, 0, 127);
imagefill($img_destino, 0, 0, $trans_colour);
imagecopyresampled( $img_destino, $img_origem, 0, 0, 0, 0, $destX, $destY, $origX, $origY );
$porcy = ($tb_y*100)/$origY;
$ny = ($MaxAlt*$porcy)/100;
$porcx = ($tb_x*100)/$origX;
$nx = ($MaxLarg*$porcx)/100;
if(($destY-$ny)<$MaxAlt) $ny = $destY-$MaxAlt;
if(($destX-$nx)<$MaxLarg) $nx = $destX-$MaxLarg;
$i = imagecreatetruecolor($MaxLarg,$MaxAlt);
imagesavealpha($i, true);
$trans_colour = imagecolorallocatealpha($i, 0, 0, 0, 127);
imagefill($i, 0, 0, $trans_colour);
imagecopy($i, $img_destino, 0, 0, $nx, $ny,$destX,$destY);
}
$img = $i;
}
else{
$destX = $largura;
$destY = $altura;
if($largura != ''){
$porc = ($largura*100)/$origX;
$destY = $tamY = ($origY*$porc)/100;
}
if($altura != ''){
$porc = ($altura*100)/$origY;
$destX = $tamX = ($origX*$porc)/100;
}
$img_destino = imagecreatetruecolor($destX,$destY);
imagesavealpha($img_destino, true);
$trans_colour = imagecolorallocatealpha($img_destino, 0, 0, 0, 127);
imagefill($img_destino, 0, 0, $trans_colour);
imagecopyresampled( $img_destino, $img_origem, 0, 0, 0, 0, $destX, $destY, $origX, $origY );
imagedestroy($img_origem);
$img = $img_destino;
}
header('Content-type: image/'.$ExtFunc);
$aux = 'image'.$ExtFunc;
if($ExtFunc == 'png') $aux($img);
else $aux($img,NULL,100);
imagedestroy($img);

?>

 

e le faz a thumb na hora de exibir asssim

 

src="fotos/resize.php?img=foto.jpg&x=180&y=160

 

mas como uso variavel puxo do banco então

 

src="fotos/resize.php?img=$foto&x=180&y=160

 

mas quando é jpeg

 

da erro nao mostra pelo código jpg e jpeg acho que deveria ler

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi exatamente seu problema. Ele não carrega a foto ou o não aparece o nome da imagem a ser carregada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então ai a foto nao exibe fica sem nada , mas se olho o código fonte ta la certim exe

 

"fotos/resize.php?img=5a5974bdc410227ee21ed8264b9b3ec2.jpeg&x=180&y=160"

 

mas clico atravez do código fonte ou vou pelo arquivo log de erro que é gerado esta assim...

 

<b>Fatal error</b>:  Call to undefined function imagecreatefrom() in <b>/home/jornalv/public_html/administracao/fotos/resize.php</b> on line <b>21</b>

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que o erro ta aqui mas nao sei como resolver pq assim

 

//ext de 3 chars
$Ext = substr($foto,-4);

//ext de 4 chars
$Ext = substr($foto,-5);

//ext de 2 chars
$Ext = substr($foto,-3);

a extensão jpeg tem 4 se uso -5 nao funciona nenhuma

 

tentei assim tbm

 

if(strtoupper($Ext) == ".JPG" OR ($Ext) == ".JPEG"){

 

resolvi retirei essa linha:

 

$Ext = substr($foto,-4);

 

e alterei a verificação:

 

antiga:

 

if(strtoupper($Ext) == ".JPG"){
$ExtFunc = "jpeg";
}
elseif(strtoupper($Ext) == ".GIF"){
$ExtFunc = "gif";
}
elseif(strtoupper($Ext) == ".PNG"){
$ExtFunc = "png";
}

 

nova:

 

if(strtoupper($Ext = substr($foto,-4)) == ".JPG"){
$ExtFunc = "jpeg";
}
elseif(strtoupper($Ext = substr($foto,-5)) == ".JPEG"){
$ExtFunc = "jpeg";
}
elseif(strtoupper($Ext = substr($foto,-4)) == ".GIF"){
$ExtFunc = "gif";
}
elseif(strtoupper($Ext = substr($foto,-4)) == ".PNG"){
$ExtFunc = "png";
}

 

Resolvido

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.