Documente Academic
Documente Profesional
Documente Cultură
Posto aqui um trecho de cdigo que usei em um form com 2 campos tipo "imagem
(nome de arquivo)". Em experincias anteriores, com meus sistemas "for windows", tive
alguns problemas, porque os usurios mandavam sempre imagens gigantes, extradas
diretamente de cmeras digitais. Como eram sistemas tipo desktop, no havia delay de
upload. No ambiente web isso tem um custo de tempo e banda e j percebi que o
usurio pensa 2 vezes antes de enviar uma imagem com 4MB por exemplo. Mesmo
assim, torna-se invivel desperdiar espao em disco no servidor, pois nem o monitor
nem as impressoras comuns que encontramos no mercado tem capacidade para exibir
toda a qualidade destas imagens. Decidi ento reduz-las foradamente atravs do
cdigo abaixo, que faz o seguinte:
1) Filtra o tipo de imagem (ainda pela extenso, no pelo mime-type) no onValidate;
2) Redimensiona as imagens gravadas para uma largura configurvel e altura
proporcional, para no haver distoro;
3) Renomeia as imagens inseridas, aplicando uma padronizao;
4) Atualiza a tabela com os novos nomes de arquivo padronizados.
No tenho experincia quase nenhuma com php, ento se algum mais experiente
quiser melhorar o cdigo fique a vontade, desde que poste tambm o resultado para
todos.
No meu sistema, tenho uma tabela com 2 campos "imagem (nome de arquivo)". Usei os
eventos onValidate, onAfterUpdate e onAfterInsert. As imagens so filtradas pela
extenso, ainda no estou usando o mime-type, que seria o mais correto.
As rotinas esto usando meus nomes de campo (imagem1 e imagem2).
Cdigo no onValidate do form:
$foto1_nome = {imagem1};
$foto1_extensao = end(explode(".", $foto1_nome));
$foto2_nome = {imagem2};
$foto2_extensao = end(explode(".", $foto2_nome));
if ($foto1_extensao != "jpg" || $foto2_extensao != "jpg")
{
sc_error_message("Apenas imagens JPG so permitidas <br />");
sc_error_exit();
}
Falta ainda verificar se as imagens no tem o mesmo nome, se algum quiser tratar...
Espero ter contribudo, um abrao a todos.
Rodrigo Arajo