-
Posts
51 -
Cadastrado em
-
Última visita
Tópicos solucionados
-
O post de lgwebforum em Erro ao tentar compactar imagens com PHP. foi marcado como solução
Muito obrigado.
Consegui fazer funcionar.
Aparentemente alguns arquivos jpeg apresentam erro e não conseguem ser lidos como jpeg.
Desta forma, a variável $imagem não era preenchida e mais adiante era apresentado o erro pela falta desta informação.
Reescrevi o código que agora faz o seguinte:
* Reduz proporcionalmente a largura da imagem para 800px caso seja maior.
Se for menor mantém as medidas.
* Verifica automaticamente se é um dos 4 tipos "jpeg, png, gif, bmp" e usa a função adequada.
No caso do gif ele irá perder o movimento.
* Define a nova resolução para 50% da original.
* Aplica as configurações acima em todas os arquivos que iniciem com "ticker"
em meu caso, estes arquivos não tem extensão portando não precisei adicionar.
O arquivo compactado irá substituir o original.
<?php ini_set('memory_limit', '-1'); /*resolvendo o erro de falta de memoria*/ function compressImage($source_path, $destination_path, $quality) { /* Obtendo informações da imagem */ $size = getimagesize($source_path); /* Verifica a largura da imagem, caso for maior que 800 será reduzida para 800 */ if ($size[0] > 800){ $new_width = "800"; /* Caso seja menor a largura original será mantida */ } else ($new_width = $size[0]); /* Obtendo a altura proporcional a nova largura */ $new_height = ( int )(( $new_width/$size[0] )*$size[1] ); /* Criano a imagem com cores reais e dimensões escolhidas */ $img_true_color = ImageCreateTrueColor( $new_width, $new_height ); /* Verifica o tipo de imagem para usar a função adequada */ if ($size['mime'] == 'image/jpeg') { $image = imagecreatefromjpeg($source_path); } elseif ($size['mime'] == 'image/png') { $image = imagecreatefrompng($source_path); } elseif ($size['mime'] == 'image/gif') { $image = imagecreatefromgif($source_path); } elseif ($size['mime'] == 'image/bmp') { $image = imagecreatefrombmp($source_path); } /* Criando a imagem redimensionada */ ImageCopyResampled( $img_true_color, $image, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1] ); /* Salva a imagem em jpg definindo local+nome e qualidade */ imagejpeg($img_true_color, $destination_path, $quality); return $destination_path; /* Limpa da memoria a imagem criada temporáriamente */ ImageDestroy( $img_true_color ); } /*-------------------*/ /*------- Definindo a pasta das imagens */ $dir_img = "pasta/web/midia_test/"; /* Handler do diretório */ $dh = opendir($dir_img); /* loop que busca todos os arquivos que iniciam com "ticker" */ while (false !== ($filename = readdir($dh))) { /* Verificando se o arquivo inicia com "ticker" */ if (substr($filename,0,6) == "ticker") { echo "$filename <br>"; /* Chama a função para cada arquivo que inicia com "ticker" */ $img = compressImage($dir_img.$filename, $dir_img.$filename, 50); } } ?>
-
O post de lgwebforum em HTML E PHP Inverter data antes de gravar no banco de dados foi marcado como solução
@dif
Você tem razão, eu não entendi nada, e agora ficou mais complicado ainda
De qualquer forma, obrigado pelo tempo despendido, vou continuar tentando
até acertar.
Boa noite.
ATUALIZADO:
ENCONTREI A SOLUÇÃO: Neste blog: http://www.l9web.com.br/blog/?p=68
Segue código com a solução:
CONVERTE A DATA DO FORMATO BR PARA EUA ANTES DE ENVIAR AO BD
A data no formato BR que está armazenada em " $_POST["dpf_dt_nasc"] "
é convertida para o formato dos EUA pelo código "implode/explode" e em seguida
armazenada na variável " $dpf_dt_nasc_eua "
$dpf_dt_nasc_eua = implode("-",array_reverse(explode("/", $_POST["dpf_dt_nasc"]))); $updateSQL = sprintf("UPDATE dados_pf SET dpf_nome=%s, dpf_est_civil=%s, dpf_rg=%s, dpf_cpf=%s, dpf_dt_nasc=%s WHERE dpf_anun_id=%s", GetSQLValueString($_POST['dpf_nome'], "text"), GetSQLValueString($_POST['dpf_est_civil'], "text"), GetSQLValueString($_POST['dpf_rg'], "text"), GetSQLValueString($_POST['dpf_cpf'], "int"), /*A data armazenada em "$dpf_dt_nasc_eua" será enviada ao BD */ GetSQLValueString($dpf_dt_nasc_eua, "date"), GetSQLValueString($_POST['anun_id'], "int")); mysql_select_db($database_conSisDtv, $conSisDtv); $Result1 = mysql_query($updateSQL, $conSisDtv) or die(mysql_error()); Ficou bem mais simples e funcional.
Obrigado a todos que contribuíram.
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais