Manipulação de Arquivos JPG

Tenho uma aplicação onde utilizo um campo imagem (nome de arquivo) e gostaria de poder antes de salvar, renomear o arquivo e checar se ele é maior que 2300x1500 pixels.
Existe alguma váriavel do scriptcase que armazena esses dados para que eu possa checar antes do upload ou só utilizando um PHP no AfterInsert mesmo?

Boa Tarde,

Nas variáveis do ScriptCase deve haver isto, mas prefiro fazer logo em PHP. Fiz uma vez para não deixar fazer o upload de uma imagem maior que 1 MB e o código foi o seguinte:

$caminho = $_SERVER[‘DOCUMENT_ROOT’] . “/scriptcase4/file/img/” . {Foto};

$tamanho = filesize($caminho);
$converter_tamanho_kb = $tamanho / 1024;
$tamanho_kb_arredondado = round($converter_tamanho_kb);

if($tamanho_kb_arredondado >= 1024) {

unlink($caminho);
sc_error_message(“Tamanho maior que o permitido! Coloque uma imagem com menos de 1M”);

}

Para o seu caso , é necessário utilizar a função do PHP ‘getimagesize’.

Com relação à renomear o arquivo, será necessário utilizar a função “rename” do php para renomear fisicamente e utilizar a macro sc_exec_sql para conseguir renomear no banco de dados.

Espero ter esclarecido e ajudado.

Atenciosamente,

Rodrigo Lins.

Desculpe levantar um post tão antigo, mas preferi usar este a criar um post com assunto duplicado.

Em uma de minhas tabelas, uso o campo imagem no arqivo e gostaria de realizar o seguinte procedimento ao enviar as 2 imagens pro servidor.

  1. Verificar se são JPG mesmo;
  2. Mudar a largura original para 400px, a altura deve ser na mesma proporção;
  3. Renomear os arquivos para um padrão definido pela chave PK, nos arquivos e no banco.

Alguém pode me dar uma ajuda?

Obrigado.
Rodrigo Araújo

Bom Dia,

Rodrigo, você pode utilizar a mesma idéia do código acima, utilizando funções do PHP, como por exemplo o explode para conseguir descobrir qual a extensão.
Ex.
$nome_imagem = {imagem};
$extensao = explode(".",$nome_imagem);

if($extensao == ‘JPEG’) {

 // condição

}

Para redimensionar, terá que utilizar a manipulação de imagens disponível no php (que no momento não utilizei ainda), mas deve haver várias formas.

E por último, como a imagem está sendo colocado em um diretório é só ler o diretório (a imagem especificamente) e utilizar a função rename do php, da forma que necessitar. Lembrando que neste momento será necessário atualizar o campo na tabela (para a aplicação identificar depois a imagem).

Espero ter ajudado.

Rodrigo Lins.

Blz Rodrigo, já estou com a função pronta e totalmente funcional. Ela dá um resize na imagem pra uma largura e altura configuráveis no script, depois coloca um nome padronizado nelas e atualiza o banco com o nome novo. Tá funcionando 100%.
Pena que ainda não consegui configurar o php do meu servidor pra trabalhar com JPG.
Por enquanto a função tá fazendo isso apenas com imagens gif.

Valeu.
Rodrigo

Boa tarde,

O PHP foi compilado na “mão” ou foi por apt-get ou pacotes prontos? Se tiver ser sido na “mão” tinha que ter definido o GD com jpeg, manualmente, se tivesse feito um apt-get já iria colocar, por padrão, na verdade… só se o GD mais novo está indo sem o jpeg, que acho difícil.

Rodrigo Lins.

Encontrei este link que pode lhe ajudar…

http://www.howtoforge.com/forums/showthread.php?t=7377

Rodrigo Lins.

Acabei de testar o php via apt-get no meu servidor de casa e funciona mesmo.
To vendo agora como remover o php do servidor de produção e proceder com o apt-get.
Valeu!

Sobre o problema que te falei com jpg no SC, era apenas isso, configuração do php!

Rodrigo

Boa Tarde,

Tranquilo então. Pode até ser que o problema que ocorreu comigo também tenha sido isto. Vou até verificar também, obrigado.

Rodrigo Lins.

Galera desculpa ter que reviver esse tópico mais me deparo com a seguinte situação:

Possuo dois campos aonde um receberá a imagem real(tamanho original) e um outro que recebe um thumb(tamanho reduzido da imagem original).

Logo fiz uma função aonde ele pega o campo da imagem original faz o redimensionamento para a thumb, porém diz que a variavel $img que e a que recebe a imagem criada diz que está indefinida. Abaixo o código de como está a minha função resize(), aonde {imagem} é a imagem real.

[code]header(‘Content-Type: image/jpeg’);

$name = ‘thumb_’.{imagem};
$origem= strtolower(end(explode(’.’,{imagem})));

if ($origem == “jpeg”){
$img = @imagecreatefromjpeg($name);
}else if ($origem==“gif”){
$img = @imagecreatefromgif($name);
}else if ($origem ==“png”){
$img = @imagecreatefrompng($name);
}
$x = imagesx($img);
$y = imagesy($img);
$altura = 150;
$largura = 222;

$nova = imagecreatetruecolor($largura, $altura );
imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $altura , $x, $y);

if ($origem==“jpeg”){
$local="$pasta/$name".".jpg";
imagejpeg($nova, $local);
}else if ($origem==“gif”){
$local="$pasta/$name".".gif";
imagejpeg($nova, $local);
}else if ($origem==“png”){
$local="$pasta/$name".".png";
imagejpeg($nova, $local);
}

imagedestroy($img);
imagedestroy($nova);

return $local;[/code]

Isto está acontecendo com todos os tipos de arquivo, jpeg, gif, png?

Variável indefinida significa variável sem valor.

O erro deve está acontecendo nesta linha, que é a primeira ocorrência de uso fora dos ifs:

$x = imagesx($img);

.