liviasam 1 Denunciar post Postado Março 13, 2014 Queridos, eu de novo aqui. Quase todos os meus problemas já foram resolvidos, falta pouco, Tenho o código abaixo, no caso específico da foto, ele verifica o tamanho e diz que não é válido o tamanho, porém as vezes você tenta inserir a foto ela da o aviso mais simplesmente exclui a foto que estava lá. Além do que em um cadastro de cliente ficar redimensionado foto é chato. Queria saber se tem como em vez dele dar o aviso, ele redimensionar uma foto para uma tamanho padrão quando eu fizer o upload. Abaixo o código: // Conexão com o banco de dados include "dbconfig.php"; if ($_POST['enviar'] == 1) { // Recupera os dados dos campos // Recupera os dados dos campos $id_cliente = $_POST['id_cliente']; $foto = $_FILES["foto"]; // Se a foto estiver sido selecionada if (!empty($foto["name"])) { // Largura máxima em pixels $largura = 150; // Altura máxima em pixels $altura = 180; // Tamanho máximo do arquivo em bytes $tamanho = 1000; // Verifica se o arquivo é uma imagem if(!@eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto["type"])){ $error[1] = "Isso não é uma imagem."; } // Pega as dimensões da imagem $dimensoes = getimagesize($foto["tmp_name"]); // Verifica se a largura da imagem é maior que a largura permitida if($dimensoes[0] > $largura) { $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels"; } // Verifica se a altura da imagem é maior que a altura permitida if($dimensoes[1] > $altura) { $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels"; } // Verifica se o tamanho da imagem é maior que o tamanho permitido if($arquivo["size"] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes"; } // Se não houver nenhum erro if (count($error) == 0) { // Pega extensão da imagem preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext); // Gera um nome único para a imagem $nome_imagem = md5(uniqid(time())) . "." . $ext[1]; // Caminho de onde ficará a imagem $caminho_imagem = "fotos/" . $nome_imagem; // Faz o upload da imagem para seu respectivo caminho move_uploaded_file($foto["tmp_name"], $caminho_imagem); } } // Se o usuário clicou no botão cadastrar efetua as ações if ($_POST['cadastrar']) { // Insere os dados no banco $sql = mysql_query("INSERT INTO clientes VALUES ('', '".$nome_imagem."')"); // Se os dados forem inseridos com sucesso if (mysql_affected_rows() > 0){ echo "Cliente cadastrado com sucesso."; } else{ echo "Erro ao cadastrar."; } } Então queridos. peguei esse código na net. O arquivo index: <?php include_once ("funcao/Redimensiona.php"); if (isset($_POST['acao']) && $_POST['acao']=="cadastrar"){ $foto = $_FILES['foto']; $redim = new Redimensiona(); $src=$redim->Redimensionar($foto, 150, "images"); } ?> <html> <head> <title>Teste</title> </head> <body> <form method="post" action="" enctype="multipart/form-data"> <label>Foto <input type="file" name="foto" /></label> <input type="submit" value="Enviar" /> <input type="hidden" name="acao" value="cadastrar" /> </form> <?php if (isset($_POST['acao']) && $_POST['acao']=="cadastrar"){ echo "<img src=\"$src\">"; } ?> </body> </html> E o arquivo Redimensiona <?php class Redimensiona{ public function Redimensionar($imagem, $largura, $pasta){ $name = md5(uniqid(rand(),true)); if ($imagem['type']=="image/jpeg"){ $img = imagecreatefromjpeg($imagem['tmp_name']); }else if ($imagem['type']=="image/gif"){ $img = imagecreatefromgif($imagem['tmp_name']); }else if ($imagem['type']=="image/png"){ $img = imagecreatefrompng($imagem['tmp_name']); } $x = imagesx($img); $y = imagesy($img); $autura = ($largura * $y)/$x; $nova = imagecreatetruecolor($largura, $autura); imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $autura, $x, $y); if ($imagem['type']=="image/jpeg"){ $local="$pasta/$name".".jpg"; imagejpeg($nova, $local); }else if ($imagem['type']=="image/gif"){ $local="$pasta/$name".".gif"; imagejpeg($nova, $local); }else if ($imagem['type']=="image/png"){ $local="$pasta/$name".".png"; imagejpeg($nova, $local); } imagedestroy($img); imagedestroy($nova); return $local; } } ?> Adaptei tranquilamente ao meu código, mas quem quiser testar pode ver que ele só ajusta a largura e não a altura. Teria como fazer ele redimensionar tanto na largura quanto na altura? Quem puder testar e me da uma ajuda agradeço. segue o exemplo em anexo. https://onedrive.live.com/redir?resid=8D03EFD53FA8E739!112&authkey=!AIvyqCGt4dNW1d0&ithint=file,.zip Poxa, ninguém da uma luz? Compartilhar este post Link para o post Compartilhar em outros sites
eduardoherden 9 Denunciar post Postado Março 13, 2014 esse projeto vai ser pra qual finaldade? Compartilhar este post Link para o post Compartilhar em outros sites
liviasam 1 Denunciar post Postado Março 13, 2014 Para um cadastro de clientes em que eu coloco a foto dele, mas ali seria uma foto de 150 x 180 no máximo. Esse código achei na net e já fiz o teste e consegui integrar no meu projetinho, mas não tive ideia de como fazer ele redimensionar largura e altura. Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Março 13, 2014 1 hora de leitura nessa página você mata isso. http://www.php.net/manual/pt_BR/book.image.php Compartilhar este post Link para o post Compartilhar em outros sites
liviasam 1 Denunciar post Postado Março 13, 2014 Desculpe amor, mas não é muito minha área programação. Se é para colocar a página do manual do php nem era para existir fórum. Bastaria criar uma página em branco colocando os links do manual php. Simples. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Março 13, 2014 Vou postar uma classe para você, serve? Compartilhar este post Link para o post Compartilhar em outros sites
liviasam 1 Denunciar post Postado Março 14, 2014 Pode ser, aí vejo se consigo adaptar Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Março 14, 2014 Então, a classe é meio antiga, mais é a mais simples que tenho, da para tratar os erros com Exception! Não esta nem comentada mas da para endender, como incluir no banco o path e excluir do servidor Recebe do form $upload = new uploadLogotipo(); $upload->Envia_Logotipo(); Esta classe aqui é que aplica o tamanho da imagem que você quer. if (file_exists( "WideImage.php")) { include_once ( "WideImage.php"); } http://wideimage.sourceforge.net/examples/basic/ http://wideimage.sourceforge.net/download/ <?php /** * uploadLogotipo - Class Manipulação de images * NOTE: PHP version 5 and up */ set_time_limit(0); if (file_exists( "WideImage.php")) { include_once ( "WideImage.php"); } class uploadLogotipo { private $arquivo = ""; private $erro = array("0" => "", "1" => "<script language=javascript>window.alert('O logotipo é maior que o permitido pelo Servidor!')</script>", "2" => "<script language=javascript>window.alert('O logotipo é maior que o permitido pelo formulario!')</script>", "3" => "<script language=javascript>window.alert('O upload do logotipO foi feito parcialmente!')</script>"); function Verifica_Upload() { $this->arquivo = isset($_FILES['logotipo']) ? $_FILES['logotipo'] : FALSE; if (!is_uploaded_file($this->arquivo['tmp_name'])) { return false; } $get = getimagesize($this->arquivo['tmp_name']); if (($get["mime"] != "image/jpeg") AND ($get["mime"] != "image/gif") AND ($get["mime"] != "image/png")) { echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse logotipo não é uma imagem válida! Formatos aceitos JPEG, JPG, GIF e PNG</span>"; echo "<META HTTP-EQUIV=REFRESH CONTENT='0'> <script type=\"text/javascript\"> alert(\"Esse arquivo não é uma imagem válida!\"); </script>"; exit; } return true; } function Envia_Logotipo() { if ($this->Verifica_Upload()) { $this->gera_fotos(); return true; } else { echo "<span style=\"color: white; border: solid 1px; background: red;\">" . @$this->erro[$this->arquivo['error']] . "</span>"; } } function gera_fotos() { $db = DB::getInstance(); $db->getConnection(); //forçando a conexao $pasta = getPost('pasta'); $diretorio = sprintf("../app/views/%s/imagens/", $pasta); if (!file_exists($diretorio)) { mkdir($diretorio); chmod($diretorio, 0777); } //verifica se existe a imagem e Exclui a logomarca anterior if ($db->fetchOne(sprintf("SELECT count(*) FROM `topo_loja` WHERE `id_cliente` = '%s'", $id_cliente)) > 0) { $rs = $db->query(sprintf("SELECT `logotipo` FROM `topo_loja` WHERE `id_cliente` = '%s'", $id_cliente)); $obj = $rs->fetch_object(); if (is_file(sprintf("%s%s", $diretorio, $obj->logotipo))) { @unlink(sprintf("%s%s", $diretorio, $obj->logotipo)); } $rs->close(); } $get2 = getimagesize($this->arquivo['tmp_name']); /* Vai servir para verificar se eh GIF ou JPG ou PNG */ $aux_tipo_imagem = $get2["mime"]; /* Vai servir para verificar se eh GIF ou JPG ou PNG */ if ($aux_tipo_imagem == "image/jpeg") { $logo = sprintf("logotipo_%s.jpg", $pasta); } elseif ($aux_tipo_imagem == "image/gif") { $logo = sprintf("logotipo_%s.gif", $pasta); } elseif ($aux_tipo_imagem == "image/png") { $logo = sprintf("logotipo_%s.png", $pasta); } @move_uploaded_file($this->arquivo['tmp_name'], $diretorio . $logo); $original = WideImage::load($diretorio . $logo); $original->resize(350, 150, 'inside')->saveToFile($diretorio . $logo); $original->destroy(); echo "<span style=\"color: white; border: solid 1px; background: purple;\">" . $this->erro[$this->arquivo['error']] . "</span>"; $altera = new manipulateData(); $altera->setTable("`topo_loja`"); $altera->setFields(sprintf("`logotipo` = '%s'", $logo)); $altera->setFieldId("`id_cliente`"); $altera->setValueId($id_cliente); $altera->update(); } } dúvidas post ae, eu tirei alguns variaveis desnecessárias, da uma olhada, estou meio com sono e cansado senão deixava no jeito e com a validações abaixo: throw new Exception("Error Processing Request", 1); try { } catch (Exception $e) { } Compartilhar este post Link para o post Compartilhar em outros sites
William Avelar 15 Denunciar post Postado Março 14, 2014 Desculpe amor, mas não é muito minha área programação. Se é para colocar a página do manual do php nem era para existir fórum. Bastaria criar uma página em branco colocando os links do manual php. Simples. Acho que o objetivo desse forum é ensinar a corrigir problemas, se fosse para postar códigos prontos cobraríamos por isso, estamos aqui apenas para ajudar e ninguém é obrigado a ajudar não, pois agradeça quando fizerem isso. A maioria dos problemas dessa area é simplesmente porque o pessoal não sabe ler documentação ou jogar o erro no google, querem tudo pronto. Se não sabe programação e quer que o pessoal te ajude Compartilhar este post Link para o post Compartilhar em outros sites
liviasam 1 Denunciar post Postado Março 14, 2014 Infelizmente vejo muitos aqui que não saibam realmente o que é programar ou mesmo o que é uma ajuda Não sou programadora, mas acho que quando alguém pede uma ajuda e outra pessoa coloca o manual do php chega a ser hilário. Então vou ficar aqui no fórum entrando em cada tópico cria do, e quando alguém tiver uma dúvida, lá vou eu e posto o link do manual php?? Com isso passo a ser uma expert em programação?? O link do manual quase todos conhecem, se é para dizer que é para ir lá, qual a finalidade do fórum?? Seria mais fácil redirecionar o endereço do iMasters para a página da php.net. Quando postamos um código, por vezes não é manual nenhum que vai ajudar, pois por vezes montamos uma estrutura, e colocamos uma variável no lugar errado, faltou um colchete em tal lugar, etc.. E isso é manual que vai ajudar? Não, isso é postado para algum integrante do fórum veja aonde está o erro, e nesses casos pode passar desapercebido por mil especialistas aqui, e do nada um menos experiente ver o erro e falar. Isso é a finalidada do fórum Perdão, abri outros tópicos aqui, uns eu mesmo resolvi e coloquei a solução. Outros me mandaram ler o anual e até disseram que era impossível fazer o que eu queria. Encontrei a solução em um tópico antigo do prórprio iMasters de um membro novo. E os especialistas que mandam eu procurar manual falavam que era impossível. E olhe que eu ainda tinha disponibilizado o sistema para testarem. Perdão aos que sempre ajudam, mas uns aqui se dizem bons na função, mas na prática não devem conhecer nada. É mais fácil postar o link do manual do php e se passar por espertos, do que tentar ajudar e mostrar que não sabe nada. Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Março 14, 2014 Isso tudo por conta de um link que eu postei? Calma filha, se eu fosse você aproveitaria essa energia que você tem para ler alguns tutoriais, artigos e quem sabe o manual do PHP. Há uns anos atrás, quando eu precisei manipular uma imagem pela primeira vez no PHP, eu fui no manual e procurei se ele tinha alguma biblioteca nativa para fazer tal manipulação, descobri que tinha, fui lendo a descrição de cada função da biblioteca, achei qual redimensionava uma imagem, vi os parâmetros que essa função precisa e seu retorno e pronto. Aí eu pergunto, porquê você não teria capacidade de fazer o mesmo? Ou falta é vontade? Não sei, aí o problema já é teu... Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Março 14, 2014 @liviasam Acho que sua interpretação do post foi muito infeliz. Como já dito, estamos aqui para auxiliar nos estudos, e não entregar a solução, pois para este tipo de coisa existe uma parte específica no fórum. Eu mesmo sou uma pessoa que posta diversos links de manuais, pois ele contém uma rica informação a respeito do que precisamos, e diferentemente do que você possa imaginar, não somente coisas técnicas, mas também com exemplos, como esta página do manual que tem mais exemplos/posts do que a documentação em si. E mesmo uma simples resposta contendo um link do manual, como fiz agora, demanda tempo de pesquisa para que possamos enviar como resposta a uma dúvida. Da forma como eu vejo, você poderia ponderar um pouco mais as palavras ao pedir ajuda. Afinal, quem precisa da ajuda é você. Ainda mais por ser iniciante (como você mesma disse), você poderia ser mais branda em suas respostas. Respostas como a sua fazem com que as pessoas fiquem propensas a não ajudar. Abraços. Ps.: Se você ainda acha que o pessoal no geral aqui é "grosso", tenta fazer o mesmo tipo de pergunta no fórum do . Compartilhar este post Link para o post Compartilhar em outros sites
liviasam 1 Denunciar post Postado Março 14, 2014 Sim, quando tiverem um problema de direito, entrem em um fórum relacionado ao mesmo, e deixam um advogado mandarem vocês lerem o código penal, código cívil, etc.. Creio que todos que fazem o mesmo aqui vão logo reclamar. Manuais são coisas específicas, ele é base para os fundamentos, depois disso se tem um erro no que você criou ou programou, o manual por vezes não vai ajudar. Como disse, por vezes são pequenos erros que passam desapercebido, e se você já fuçou tudo, leu manuais e entra aqui para tentar a solução, e te mandam ler o manual de novo?? Aff. Infelizmente a panelinha e o corporativismo aqui é grande. Fico a disposição se quiserem deletar este tópico ou mesmo me banirem. Mas não deixo de falar o que penso, gostem ou não. Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Março 14, 2014 Infelizmente a panelinha e o corporativismo aqui é grande. Compartilhar este post Link para o post Compartilhar em outros sites
liviasam 1 Denunciar post Postado Março 14, 2014 Obrigada, Não ligo para essas coisas meu bem. Mas a carapuça te serviu. Bjs Compartilhar este post Link para o post Compartilhar em outros sites
Osmar L Lima 51 Denunciar post Postado Março 14, 2014 Oloko, as coisas aqui esquentaram... mas voltando a dúvida em questão segue em exemplo, lembrando que é apenas para mostrar a lógica, o código está comentado. <?php // intval faz com que seja impossível passar valores siferentes de inteiros. $largura_nova = intval( $_GET['largura'] ); // Somente exita números muito pequenos. Para este exemplo não quero if($largura_nova < 20) $largura_nova = 20; // Carregar imagem já existente no servidor $imagem = imagecreatefromjpeg( "foto.jpg" ); /* @Parametros * "foto.jpg" - Caminho relativo ou absoluto da imagem a ser carregada. */ // Obtem a largura_nova da imagem $largura_original = imagesx( $imagem ); /* @Parametros * $imagem - Imagem previamente criada Usei imagecreatefromjpeg */ // Obtém a altura da imagem $altura_original = imagesy( $imagem ); /* @Parametros * $imagem - Imagem previamente criada Usei imagecreatefromjpeg */ // Calcula a nova altura da imagem $altura_nova = intval( ( $altura_original * $largura_nova ) / $largura_original ); // Cria a nova imagem com os tamanhos novos $nova_imagem = imagecreatetruecolor( $largura_nova, $altura_nova ); /* @Parametros * $largura_nova - Largura da nova imagem * $altura_nova - Altura da nova imagem */ // Cria uma cópia da imagem com os novos tamanhos e // passa para a imagem criada com imagecreatetruecolor imagecopyresampled( $nova_imagem, $imagem, 0, 0, 0, 0, $largura_nova, $altura_nova, $largura_original, $altura_original ); /* @Parametros * $nova_imagem - Nova imagem criada com imagecreatetruecolor * $imagem - Imagem a ser redimensionada. * 0 - Valor X de destino. Usado quando recortar * 0 - Valor Y de destino. Usado quando recortar * 0 - Valor X da imagem original. Usado quando recortar * 0 - Valor Y da imagem original. Usado quando recortar * $largura_nova - Nova largura * $altura_nova - Nova altura * $largura_original - Altura da imagem original * $altura_original - Largura da imagem original */ // Header informando que é uma imagem JPEG header( 'Content-type: image/jpeg' ); // eEnvia a imagem para o borwser ou arquivo imagejpeg( $nova_imagem, NULL, 80 ); /* @Parametros * $imagem - Imagem previamente criada Usei imagecreatefromjpeg * NULL - O caminho para salvar o arquivo. Se não definido ou NULL, o stream da imagem será mostrado diretamente. * 80 - Qualidade da compresão da imagem. */ ?> Compartilhar este post Link para o post Compartilhar em outros sites
liviasam 1 Denunciar post Postado Março 14, 2014 Obrigado Osmar, preciso +/- disso para ver se consigo adaptar ao que eu tenho. O código que postei no início é disponibilizado na net, porém já o vi rodar em vários fóruns e muito aqui, mas ninguém deu solução. Então creio que se os "experts" não deram solução, não querem que uma iniciante que mal tem sem trabalho voltado para programação tenha que ler manuais e dar a solução. Tendo de fazer um cadastro simples para minha loja no qual depois espero nunca mais mexer com isso, e aqui querem que estudo meses para conseguir algo que vou precisar uma vez. Falta de bom senso e inteligência. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Março 14, 2014 @liviasam Foque em seu problema, ficar discutindo não resolve, 60% estão aqui para ajudar, 39% para sugar e e menos de 1% as vezes contribuem para acender um estopim, a e vira no que virou o post. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
liviasam 1 Denunciar post Postado Março 14, 2014 Verdade Williams, Vou focar aqui e peço desculpas aos que entendem e tentam ajudar de alguma forma mais prática. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Março 14, 2014 Indo direto ao ponto... Verifica se é um resource identificador da imagem /** * Verifica se é um resource identificador da imagem * @param resource $image O identificador da imagem * @return void */ function error_image( $image ) { if( ! is_resource( $image ) ) { trigger_error( sprintf( '%s is not an image resource identifier!', $image ), E_USER_ERROR ); } } Converte as cores de hexadecimal para RGB /** * Converte as cores de hexadecimal para RGB * @param string $color A cor em hexadecimal da string a ser escrita * @return array Um array associativo com as cores RGB */ function hex_rgb( $color = '#FFFFFF' ) { if( ! is_string( $color ) ) { trigger_error( 'Insert hexadecimal string!', E_USER_ERROR ); } $color = substr( preg_replace( '/[^0-9A-Fa-f]/', null, ( string ) $color ), 0, 6 ); if( strlen( $color ) == 3 ) { list( $r, $g, $b ) = array_map( 'str_repeat', str_split( $color ), array_fill( 0, 3, 2 ) ); } elseif( strlen( $color ) <= 6 ) { list( $r, $g, $b ) = str_split( str_pad( $color, 6, 'F' ), 2 ); } return array( 'r' => hexdec( $r ), 'g' => hexdec( $g ), 'b' => hexdec( $b ) ); } Redimensiona a imagem recortando /** * Redimensiona a imagem recortando * @param resource $image O identificador da imagem * @param int $new_width A nova largura * @param int $new_height A nova altura * @return resource O identificador da imagem modificada */ function resize_crop( $image, $new_width, $new_height ) { error_image( $image ); $new_width = ( int ) $new_width; $new_height = ( int ) $new_height; $old_width = imagesx( $image ); $old_height = imagesy( $image ); $hm = ( $old_height / $new_width ); $wm = ( $old_width / $new_height ); $h_height = ( $new_height / 2 ); $h_width = ( $new_width / 2 ); if( $wm > $hm ) { $position_crop[ 2 ] = ( $old_width / $hm ); $position_crop[ 3 ] = $new_height; $position_crop[ 0 ] = ( ( $position_crop[ 2 ] / 2 ) - $h_width ); $position_crop[ 1 ] = 0; } elseif( $wm <= $hm ) { $position_crop[ 2 ] = $new_width; $position_crop[ 3 ] = ( $old_height / $wm ); $position_crop[ 0 ] = 0; $position_crop[ 1 ] = ( ( $position_crop[ 3 ] / 2 ) - $h_height ); } $img = imagecreatetruecolor( $new_width, $new_height ); imagecopyresampled( $img, $image, - $position_crop[ 0 ], - $position_crop[ 1 ], 0, 0, $position_crop[ 2 ], $position_crop[ 3 ], $old_width, $old_height ); return $img; } Redimensiona a imagem proporcionalmente /** * Redimensiona a imagem proporcionalmente * @param resource $image O identificador da imagem * @param int $new_width A nova largura * @param int $new_height A nova altura * @return resource O identificador da imagem modificada */ function resize_relative( $image, $new_width, $new_height ) { error_image( $image ); $new_width = ( int ) $new_width; $new_height = ( int ) $new_height; $old_width = imagesx( $image ); $old_height = imagesy( $image ); $ratio_orig = ( $old_width / $old_height ); if( $new_width / $new_height > $ratio_orig ) { $dif_w = ( $new_height * $ratio_orig ); $dif_h = $new_height; } else { $dif_w = $new_width; $dif_h = ( $new_width / $ratio_orig ); } $img = imagecreatetruecolor( $dif_w, $dif_h ); imagecopyresampled( $img, $image, 0, 0, 0, 0, $dif_w, $dif_h, $old_width, $old_height ); return $img; } Redimensionamento com preenchimento /** * Redimensionamento com preenchimento * de cor de fundo definida * @param resource $image O identificador da imagem * @param int $new_width A nova largura * @param int $new_height A nova altura * @param string $background [opcional] A cor de fundo em hexadecimal * @return resource O identificador da imagem modificada */ function resize_fill( $image, $new_width, $new_height, $background = '#FFFFFF' ) { error_image( $image ); $new_width = ( int ) $new_width; $new_height = ( int ) $new_height; $old_width = imagesx( $image ); $old_height = imagesy( $image ); $img = imagecreatetruecolor( $new_width, $new_height ); $RGB = hex_rgb( $background ); $background = imagecolorallocate( $img, $RGB[ 'r' ], $RGB[ 'g' ], $RGB[ 'b' ] ); imagefill( $img, 0, 0, $background ); $dif_x = $dif_w = $new_width; $dif_y = $dif_h = $new_height; if( ( $old_width / $new_width ) > ( $old_height / $new_height ) ) { $factor = ( $old_width / $new_width ); } else { $factor = ( $old_height / $new_height ); } $dif_w = ( $old_width / $factor ); $dif_h = ( $old_height / $factor ); $dif_x = ( ( $dif_x - $dif_w ) / 2 ); $dif_y = ( ( $dif_y - $dif_h ) / 2 ); imagecopyresampled( $img, $image, $dif_x, $dif_y, 0, 0, $dif_w, $dif_h, $old_width, $old_height ); return $img; } Redimensionamento simples /** * Redimensionamento simples * @param resource $image O identificador da imagem * @param int $new_width A nova largura * @param int $new_height A nova altura * @return resource O identificador da imagem modificada */ function resize( $image, $new_width, $new_height ) { error_image( $image ); $new_width = ( int ) $new_width; $new_height = ( int ) $new_height; $old_width = imagesx( $image ); $old_height = imagesy( $image ); $img = imagecreatetruecolor( $new_width, $new_height ); imagecopyresampled( $img, $image, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height ); return $img; } Exemplo de uso <?php $image = resize_fill( imagecreatefromjpeg( 'Chibi_Kakashi.jpg' ), 300, 300, '#F00' ); imagejpeg( $image, 'caminho/nome_da_imagem.jpg', 100 ); ?> Dúvidas? :seta: Image Processing and GD Compartilhar este post Link para o post Compartilhar em outros sites