Jump to content


Photo

Borda Em Imagem No Php


  • Faça o login para participar
5 replies to this topic

#1 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 03/02/2009, 17:17

Olá gente! Tenho um script onde o usuário ao cadastrar o produto, ele insere uma imagem.

Porém gostaria de colocar uma borda dupla. Uma borda com 1px cinza e outra com 4px em branco, e aí a imagem.

Posted Image Vejam!

Tentei com o PHP, porém sem resultado. Sei que estou no caminho certo mas não está funcionando.

define('MAX_WIDTH', 110);define('MAX_HEIGHT', 80);# Carrega a imagem$img = null;$img = @imagecreatefromstring($sImagem);	// Pega o tamanho da imagem e proporção de resize	$width = imagesx($img);	$height = imagesy($img);	$scale = min(MAX_WIDTH/$width, MAX_HEIGHT/$height);	//Insere uma borda na imagem	$branco = ImageColorAllocate($img, 255, 255, 255);	imagerectangle($img, 0, 0, $new_width, $new_height, $branco);

Esse max width e max height são as alturas e larguras máximas. A partir destes valores, ele faz o calculo para manter a proporção no upload. O problema é que eu nao posso setar os pixels fixos, pois as imagens podem ser diferentes por causa das proporções, e com isso a borda poderá ficar torta ou nem aparecer! A borda tem que sempre respeitar o max width e max height!

Abaixo o script todo para quem quiser dar uma olhada.

<?phpob_start();define('PATH_IMG', 'admin/imagens/noticias');define('MAX_WIDTH', 110);define('MAX_HEIGHT', 80);# Pega onde está a imagem// so tenta redimensionar imagens$mime = array('.jpg','.png','.gif','.jpeg','.bmp');$imagemQs = $img;$imagem   = PATH_IMG . '/' . $imagemQs;if(!in_array(substr($imagem,-4),$mime)){    die;}$sImagem  = @file_get_contents($imagem);// se o thumbnail ja existir, mostra o mesmo.if(@file_exists(PATH_IMG.'/thm_'.$imagemQs)){    header('Content-type: image/jpeg');    readfile(PATH_IMG.'/thm_'.$imagemQs);    die;}# Carrega a imagem$img = null;$img = @imagecreatefromstring($sImagem);// Se a imagem foi carregada com sucesso, testa o tamanho da mesmaif ($img) {    // Pega o tamanho da imagem e proporção de resize    $width = imagesx($img);    $height = imagesy($img);    $scale = min(MAX_WIDTH/$width, MAX_HEIGHT/$height);    // Se a imagem é maior que o permitido, encolhe ela!    if ($scale < 1) {        $new_width = floor($scale * $width);        $new_height = floor($scale * $height);        // Cria uma imagem temporária        $tmp_img = imagecreatetruecolor($new_width, $new_height);        // Copia e resize a imagem velha na nova (trocado imagecopyresized por imagecopyresampled. mais qualidade e menor arquivo)        imagecopyresampled($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);        imagedestroy($img);        $img = $tmp_img;    }}// Cria uma imagem de erro se necessárioif (!$img) {    $img = imagecreate(MAX_WIDTH, MAX_HEIGHT);    imagecolorallocate($img, 204, 204, 204);    $c = imagecolorallocate($img, 153, 153, 153);    $c1 = imagecolorallocate($img, 0, 0, 0);    imageline($img, 0, 0, MAX_WIDTH, MAX_HEIGHT, $c);    imageline($img, MAX_WIDTH, 0, 0, MAX_HEIGHT, $c);    imagestring($img, 2, 12, 55, 'Erro ao carregar imagem <br>'.$_SERVER['QUERY_STRING'], $c1);}// o exemplo a seguir salva o thumbnail no mesmo lugar que a imagem original com o prefixo thumb, para fins de cache.// se não precisar desta funcionalidade, basta comentar o primeiro imagejpeg()	//Insere uma borda na imagem	$branco = ImageColorAllocate($img, 255, 255, 255);	imagerectangle($img, 0, 0, $new_width, $new_height, $branco);// Salva a imagem no mesmo dir com prefixo thm_ e qualidade melhorada. só se não houve um erroif(!empty($imagemQs) && @file_exists($imagem)){    imagejpeg($img,PATH_IMG.'/thm_'.$imagemQs,85);}// Mostra a imagemheader('Content-type: image/jpeg');imagejpeg($img);?>

Para chamar a imagem, eu apenas faço <img src="thumb.php?img=nomedaimagem"/>

Algue

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#2 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 03/02/2009, 19:08

me diz uma coisa... essas bordas é por necessidade estética e visual?
Se sim... porque não usa CSS para exibir essas imagens com as bordas desta forma?
uma bordinha ali uma DIVsinha acolá... resolvido...
Mas se não for apenas visual e estético a finalidade... aí é outra coisa... Até mais

#3 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 03/02/2009, 21:13

é só visual sim!

Porém,com CSS não consigo fazer essas bordas duplas do jeito que está ali... com a propriedade double, fica esquisito! E com solid só dá 1 cor!

Queria 1px cinza e 4 brancos, no CSS não consegui fazer!

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#4 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 04/02/2009, 00:26

maykel,

No CSS não tem segredo não... :D

img.classeImagem {
	 padding: 4px;
	 background: #FFF;
	 border: solid 1px #CCC;
}

<img scr="thumb.php?img=nomedaimagem" class="classeImagem" />

(ok2)
att,
Muller Dias
ex-administrador Fórum WMO

#5 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 04/02/2009, 02:22

maykel,

No CSS não tem segredo não... :D


é o que eu ia dizer ¬¬

hehehe

(y)Até mais

#6 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 04/02/2009, 07:54

juro que esqueci do padding...

resolvido :P

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq