Recebo uma imagem via Form. Preciso redimensiona-la via PHP. Não consegui achar uma funcão para isto....
Nenhuma descrição foi enviada.
comentários (0)
suspender
Lista de Respostas:
01/07/2003 7:02am
(~21 anos atrás)
(~21 anos atrás)
Você pode utilizar o HTML puro mesmo através das propriedades WIDTH e HEIGHT da tag IMG, ou pode utilizar o PHP.
Vide exemplo:
<?
header("Content-type: image/jpeg");
$nova_largura = 100;
$nova_altura = 100;
# No exemplo a umagem está contida no mesmo diretório do arquivo PHP
$imagem = "D:\imgagem.JPG";
$img_origem = imagecreatefromjpeg($imagem);
$img_destino = imagecreatetruecolor($nova_largura,$nova_altura);
imagecopyresampled($img_destino,$img_origem,0,0,0,0,$nova_largura,$nova_altura,imagesx($img_origem),imagesy($img_origem));
imageJPEG($img_destino);
?>
;)
Vide exemplo:
<?
header("Content-type: image/jpeg");
$nova_largura = 100;
$nova_altura = 100;
# No exemplo a umagem está contida no mesmo diretório do arquivo PHP
$imagem = "D:\imgagem.JPG";
$img_origem = imagecreatefromjpeg($imagem);
$img_destino = imagecreatetruecolor($nova_largura,$nova_altura);
imagecopyresampled($img_destino,$img_origem,0,0,0,0,$nova_largura,$nova_altura,imagesx($img_origem),imagesy($img_origem));
imageJPEG($img_destino);
?>
;)
04/07/2003 12:53am
(~21 anos atrás)
(~21 anos atrás)
Lá vai um pequeno exemplo, supondo que a imagem do formulário venha com o nome "arquivo", podemos criar um thumb dela nas dimensões 120x96 da seguinte forma: (e a imagem que veio for Jpeg)
<?
$thumb = ImageCreate(120,96);
$origem = ImageCreateFromJpeg("$destino");
ImageCopyResized($thumb,$origem,0,0,0,0,120,96,ImageSX($origem),ImageSY($origem));
ImageJpeg($thumb);
?>
<?
$thumb = ImageCreate(120,96);
$origem = ImageCreateFromJpeg("$destino");
ImageCopyResized($thumb,$origem,0,0,0,0,120,96,ImageSX($origem),ImageSY($origem));
ImageJpeg($thumb);
?>
08/07/2003 9:53pm
(~21 anos atrás)
(~21 anos atrás)
Fala fábio!
Rodei o script mas naum funcionou...
Rodei o script mas naum funcionou...
10/07/2003 6:13am
(~21 anos atrás)
(~21 anos atrás)
Testei o script do Olavo e obtive sucesso no redimensionamento... se bem que distorce a imagem, como era de se esperar.
11/07/2003 3:22pm
(~21 anos atrás)
(~21 anos atrás)
Se não quiser distorção na imagem é só você redimensionar proporcionalmente utilizando uma regra de 3!! Por exemplo:
Se a imagem tem 800x600:
$nova_largura= 80;
800 - 80
600 - nova_altura
Ficará:
$nova_altura = imagesY($imagem)*$nova_largura/imagesX($imagem);
Bem, aqui estamos supondo que você queira redimensionar usando a largura como base para o redimensionamento. Mas você poderá fazer usando outras coisas como base.
Se a imagem tem 800x600:
$nova_largura= 80;
800 - 80
600 - nova_altura
Ficará:
$nova_altura = imagesY($imagem)*$nova_largura/imagesX($imagem);
Bem, aqui estamos supondo que você queira redimensionar usando a largura como base para o redimensionamento. Mas você poderá fazer usando outras coisas como base.
15/07/2003 9:47am
(~21 anos atrás)
(~21 anos atrás)
Você pode utilizar a função GetImageSize.
Pegando o tamanho da imagem e dividindo conforme sua necessidade.
Essa função retorna um Array a posição 0 é a largura e a posição 1 é a altura.
Por exemplo:
$tamanho = GetImageSize($imagem);
while($tamanho[0]!= 90){
$tamanho[0] = $tamanho[0]/3;
$tamanho[1] = $tamanho[1]/3;
}
Ele vai criar um preview dessa imagem, para que possa ser utilizada para visualização:
<img src="<? echo $imagem;?>" width="<? echo $tamanho[0]?>" height="<? echo $tamanho[1]?>">
podendo utilizar conforme necessidade.
Ok?
Diego.
Pegando o tamanho da imagem e dividindo conforme sua necessidade.
Essa função retorna um Array a posição 0 é a largura e a posição 1 é a altura.
Por exemplo:
$tamanho = GetImageSize($imagem);
while($tamanho[0]!= 90){
$tamanho[0] = $tamanho[0]/3;
$tamanho[1] = $tamanho[1]/3;
}
Ele vai criar um preview dessa imagem, para que possa ser utilizada para visualização:
<img src="<? echo $imagem;?>" width="<? echo $tamanho[0]?>" height="<? echo $tamanho[1]?>">
podendo utilizar conforme necessidade.
Ok?
Diego.
16/10/2003 12:28pm
(~21 anos atrás)
(~21 anos atrás)
Uso esta função (de minha altoria) para calcular o tamanho.
function display_img($arch,$tamanho,$codigo,$wh = 0)
{
// Esta função pode receber tanto um ponteiro para uma imagem
// como também, o path para o arquivo
if(!is_string($arch)){
$imgsize[0] = imagesx($arch);
$imgsize[1] = imagesy($arch);
}else {
if($imgsize[0] == '' && $imgsize[1] == '') $imgsize = GetImageSize($arch);
}
if(($imgsize[0]>$tamanho) and ($imgsize[0]>$imgsize[1])){
$percentual = ($tamanho*100)/$imgsize[0];
$img_w = $imgsize[0];
$img_h = $imgsize[1];
$nov_w = ($imgsize[0]*$percentual)/100;
$nov_h = ($imgsize[1]*$percentual)/100;
}
elseif($imgsize[1]>$tamanho){
$percentual = ($tamanho*100)/$imgsize[1];
$img_w = $imgsize[0];
$img_h = $imgsize[1];
$nov_w = ($imgsize[0]*$percentual)/100;
$nov_h = ($imgsize[1]*$percentual)/100;
}
else{
$img_w = $imgsize[0];
$img_h = $imgsize[1];
$nov_w = $imgsize[0];
$nov_h = $imgsize[1];
}
if ($wh) return array(0=>$nov_w,1=>$nov_h);
else return "<img src=$arch width='$nov_w' heigth='$nov_h' $codigo>";
}
Por exemplo eu tenho um lugar onde o maior lado da imagem(idempente de qual seja) deve ter 100, e quero o retorno do tamanha(tambem tem a opção de retorna o código da imagem, pronto para ir para o código html)
$new_size = display_img('./file.jpg',100,'',true);
Em alguns casos, comos os que uso, isso e funcional. Não sei se seria funcional para vcs mais ai esta.
function display_img($arch,$tamanho,$codigo,$wh = 0)
{
// Esta função pode receber tanto um ponteiro para uma imagem
// como também, o path para o arquivo
if(!is_string($arch)){
$imgsize[0] = imagesx($arch);
$imgsize[1] = imagesy($arch);
}else {
if($imgsize[0] == '' && $imgsize[1] == '') $imgsize = GetImageSize($arch);
}
if(($imgsize[0]>$tamanho) and ($imgsize[0]>$imgsize[1])){
$percentual = ($tamanho*100)/$imgsize[0];
$img_w = $imgsize[0];
$img_h = $imgsize[1];
$nov_w = ($imgsize[0]*$percentual)/100;
$nov_h = ($imgsize[1]*$percentual)/100;
}
elseif($imgsize[1]>$tamanho){
$percentual = ($tamanho*100)/$imgsize[1];
$img_w = $imgsize[0];
$img_h = $imgsize[1];
$nov_w = ($imgsize[0]*$percentual)/100;
$nov_h = ($imgsize[1]*$percentual)/100;
}
else{
$img_w = $imgsize[0];
$img_h = $imgsize[1];
$nov_w = $imgsize[0];
$nov_h = $imgsize[1];
}
if ($wh) return array(0=>$nov_w,1=>$nov_h);
else return "<img src=$arch width='$nov_w' heigth='$nov_h' $codigo>";
}
Por exemplo eu tenho um lugar onde o maior lado da imagem(idempente de qual seja) deve ter 100, e quero o retorno do tamanha(tambem tem a opção de retorna o código da imagem, pronto para ir para o código html)
$new_size = display_img('./file.jpg',100,'',true);
Em alguns casos, comos os que uso, isso e funcional. Não sei se seria funcional para vcs mais ai esta.
17/10/2003 2:17pm
(~21 anos atrás)
(~21 anos atrás)
E como faço para que o resultado, esta imagem redimensionada no caso, seja salva em um arquivo JPG ?
05/05/2004 10:53am
(~20 anos atrás)
(~20 anos atrás)
Vc pode utilizar a biblioteca gd:
//Recebe o nome da imagem
$imagem=$_GET['imagem'];
$img = ImageCreateFromJpeg("../../img/img_thumb/".$imagem);
//recebe a altura e largura da imagem e
//ja tira a proporção de largura
$wi=ImageSY($img);
$he=ImageSX($img);
$img_wi=110;
$img_he=$he * 110 / $wi;
//Aqui é criada a nova imagem
$img_nova = imagecreatetruecolor ($img_he,$img_wi);
imagecopyresized ($img_nova, $img, 0, 0, 0, 0, $img_he, $img_wi, $he, $wi);
//Recebe o nome da imagem
$imagem=$_GET['imagem'];
$img = ImageCreateFromJpeg("../../img/img_thumb/".$imagem);
//recebe a altura e largura da imagem e
//ja tira a proporção de largura
$wi=ImageSY($img);
$he=ImageSX($img);
$img_wi=110;
$img_he=$he * 110 / $wi;
//Aqui é criada a nova imagem
$img_nova = imagecreatetruecolor ($img_he,$img_wi);
imagecopyresized ($img_nova, $img, 0, 0, 0, 0, $img_he, $img_wi, $he, $wi);
31/05/2004 8:34am
(~20 anos atrás)
(~20 anos atrás)
Para Éverton Antônio Ribeiro em 2003-10-16 12:28:10
Muito boa a sua Função,principalmente para iniciantes (no meu caso), tentei usá-la nessa situação, eu não consigo fazer o print da variável dentro da funcao:
$num = mysql_num_rows($resultado);
if ( $num <= 0){echo "Nenhuma imagem na galeria";}
else { for($i==0;$i<$num;$i++) {$arch = mysql_result($resultado,$i,"foto");
$pasta="imagens/";
$arch=$pasta.=$arch;
$new_size = display_img('$arch','60','','true');?>
se alguém me ajudar fico mui agradecido.
Muito boa a sua Função,principalmente para iniciantes (no meu caso), tentei usá-la nessa situação, eu não consigo fazer o print da variável dentro da funcao:
$num = mysql_num_rows($resultado);
if ( $num <= 0){echo "Nenhuma imagem na galeria";}
else { for($i==0;$i<$num;$i++) {$arch = mysql_result($resultado,$i,"foto");
$pasta="imagens/";
$arch=$pasta.=$arch;
$new_size = display_img('$arch','60','','true');?>
se alguém me ajudar fico mui agradecido.