Ir para conteúdo

POWERED BY:

Arquivado

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

alissonxx

[Resolvido] Criar miniatura de imagem gravada em campo Blob

Recommended Posts

Boa tarde,

 

gostaria de saber se alguem tem ideia de como transformar a imagem BLOB em uma miniatura...

 

a unica coisa que eu faço é retornar a imagem do banco de dados e mostrar através do codigo abaixo

 

header("Content-type: $tipo");
echo"$arquivo";

se eu colocar algum codigo a mais no código acima já me retorna um erro dizendo que não foi possível abrir a imagem...

 

Há possibilidade de manipular imagens de campo blob? alterar tamanho e etc?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara... eu não testei...

mas da uma olhada aqui:

 

http://br2.php.net/manual/en/function.imagecreatefromstring.php

 

Um exemplo (se der erro poste aqui, pois não testei...):


//tamanho do thumb
$new_w = 200;
$new_h = 150

$im = imagecreatefromstring($arquivo);

$width = imagesx($im);
$height = imagesy($im);

$thumb = imagecreatetruecolor($new_w,$new_h); 
imagecopyresized($thumb,$im,0,0,0,0,$new_w,$new_h,$width,$height);

if ($tipo == "image/pjpeg") {    
      imagejpeg($thumb); 
} else if ($tipo == "image/x-png") {
      imagepng($thumb);
} else if ($tipo == "image/gif") {
      imagegif($thumb);
}
imagedestroy($thumb);

Compartilhar este post


Link para o post
Compartilhar em outros sites

testei.. nao deu erro... mostrou a imagem do tamanho normal..

 

não sei como funciona isso.. manipulação de blob, eu usava com upload de arquivo e

 

<?

$arquivos_codigo=$_GET['arquivos_codigo'];
$sql="select * from arquivos where arquivos_codigo='$arquivos_codigo'";
$resultado=mysql_query($sql);
$row=mysql_fetch_array($resultado);
$arquivo=$row['arquivo'];
$tipo=$row['tipo'];

header("Content-type: $tipo");
echo"$arquivo";

//tamanho do thumb
$new_w = 200;
$new_h = 150;

echo $im = imagecreatefromstring($arquivo);

$width = imagesx($im);
$height = imagesy($im);

$thumb = imagecreatetruecolor($new_w,$new_h); 
imagecopyresized($thumb,$im,0,0,0,0,$new_w,$new_h,$width,$height);

if ($tipo == "image/pjpeg") {    
      imagejpeg($thumb); 
} else if ($tipo == "image/x-png") {
      imagepng($thumb);
} else if ($tipo == "image/gif") {
      imagegif($thumb);
}
//imagedestroy($thumb);

echo $thumb;
?>

Cara... eu não testei...

mas da uma olhada aqui:

 

http://br2.php.net/manual/en/function.imagecreatefromstring.php

 

Um exemplo (se der erro poste aqui, pois não testei...):


//tamanho do thumb
$new_w = 200;
$new_h = 150

$im = imagecreatefromstring($arquivo);

$width = imagesx($im);
$height = imagesy($im);

$thumb = imagecreatetruecolor($new_w,$new_h); 
imagecopyresized($thumb,$im,0,0,0,0,$new_w,$new_h,$width,$height);

if ($tipo == "image/pjpeg") {    
      imagejpeg($thumb); 
} else if ($tipo == "image/x-png") {
      imagepng($thumb);
} else if ($tipo == "image/gif") {
      imagegif($thumb);
}
imagedestroy($thumb);

Compartilhar este post


Link para o post
Compartilhar em outros sites

tire isso:

//tire essa linha
echo "$arquivo";

//...

//essas também
echo $thumb;


//descomente essa linha
imagedestroy($thumb);

 

quando você executa

imagejpeg($thumb); 
a imagem já é enviada para o browser... não precisa echo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deu certo tbm..

 

a pagina onde ocorre isso tem header pra imagem e na variavel $arquivo eu tenho o conteúdo da imagem,

 

se eu nao colocar echo $arquivo ou echo $thumb não vai ter conteudo para mostrar...

 

eu procurei e achei uma solução.. efetuar a gravação da imagem e da miniatura no banco.

 

 

tire isso:

//tire essa linha
echo "$arquivo";

//...

//essas também
echo $thumb;


//descomente essa linha
imagedestroy($thumb);

 

quando você executa

imagejpeg($thumb); 
a imagem já é enviada para o browser... não precisa echo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

a pagina onde ocorre isso tem header pra imagem e na variavel $arquivo eu tenho o conteúdo da imagem,

 

se eu nao colocar echo $arquivo ou echo $thumb não vai ter conteudo para mostrar...

 

 

Vai sim... a função imagejpeg($thumb) envia conteúdo para o browser. Só não envia se você passar o segundo parâmetro, que o caminho onde ela vai salvar a imagem... se você não passar ela praticamente da um echo na imagem... por isso disse pra você não colocar o echo.

 

Estranho... aqui eu testei e funcionou perfeito.

 

 

não da nenhum erro?

 

tenta colocar error_reporting( E_ALL ) no começo, e ver se da algum erro...

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.