Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rickgodoy84

Gerar Thumb de .JPG sem componente?

Recommended Posts

Pessoal,

 

Através do tópico do "dark0" consegui fazer o upload de arquivos sem componentes.

 

Mas preciso incrementar este script com algumas funções conforme descrito abaixo.

 

Consigo fazer estas melhorias no script sem usar nenhum componente?~

 

Eu preciso:

- Restringir o envio de arquivos (somente .JPG)

- Restringir o tamanho do arquivo (máx. de 600kb)

- Gerar thumbnail do arquivo enviado (120px X 220px)

- Gerar um xml FÍSICO para que meu .FLA leia e chame as fotos.

 

Alguém pode me ajudar?

 

abraços!

 

Richard

Compartilhar este post


Link para o post
Compartilhar em outros sites

Restringir o envio de arquivos (somente .JPG)
- Restringir o tamanho do arquivo (máx. de 600kb)

Pode fazer isso usando java script

 

- Gerar thumbnail do arquivo enviado (120px X 220px)

Só com componente como aspjpeg, sem componente não existe....

 

- Gerar um xml FÍSICO para que meu .FLA leia e chame as fotos.

Vai fazer uma galeria em asp com flash ???? Se for isso ve na seção flash...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda Loko!

 

Na verdade vi que posso usar o componente AspJpeg pois está disponível no servidor, acho que agora fica mais fácil.

 

Achei vários scripts de gerar thumbnail mas a maioria pega um arquivo já salvo no servidor e gera um thumb em outra pasta.

 

Como faço isso dentro do mesmo script que faz o UPLOAD sem componentes do "Dark0'?

 

Quando der o submit da form os campos são salvos no BD(ok) o arquivo .jpg é enviado para uma pasta(ok) e através deste arquivo gero um thumb que é salvo em outra pasta(?)?

 

Alguém?

 

obrigado.

 

Richard

Compartilhar este post


Link para o post
Compartilhar em outros sites

se vai usar o AspJpeg, não vai precisar usar o upload sem comonentes, faz tudo com o AspJpeg, mais limpo e prático!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Ted K, obrigado pela resposta.

 

Na verdade meu site ta hospedado na Locaweb e tinha entendido que teria que fazer o upload usando SaFileUp e gerar o thumb através do AspJpeg.

 

Consegui fazer upload através do SaFileUp, mas não consegui com um só script fazer outros campos do form serem gravados no BD, pois ele não aceita "request.form", etc., por isso resolvi fazer sem componentes e tal...

 

Agora já está funcionando sem erros, o script grava os campos no BD e envia o arquivo, precisava apenas de uma ajuda com algum script que pegue este arquivo a ser enviado, gere um thumb de tamanho X e Y e salve na mesma pasta que o .JPEG original, so que acresente "_th" , "_small" algo do tipo pra eu identificar este thumb.

 

Pode me ajudar?

 

tks.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim ajudo, olha só

 

para pegar o nome do formulário use upload.form ou upl.form, não sei como você colocou!

 

no próprio site da locaweb tem isso

http://site.locaweb.com.br/suporte/faq/faq.asp?faq=878

 

agora no lugar de teste.jpg coloque o campo da imagem

 

veja o exemplo do site aspjpeg

http://www.aspjpeg.com/manual_03.html

 

repare no ítem "3.2 Resizing Uploaded Images", bem mastigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

no próprio site da locaweb tem isso

http://site.locaweb.com.br/suporte/faq/faq.asp?faq=878

 

agora no lugar de teste.jpg coloque o campo da imagem

Ted K,

 

Adicionei este script dentro da página que envia o arquivo e grava os dados no BD.

 

Aonde tinhamos "teste.jpg" coloquei "\foto", e no início do script eu digo que: foto = UploadRequest.Item("foto").Item("Value")

 

'Criando o thumbnail: 
Set Jpeg = Server.CreateObject("Persits.Jpeg") 
Path = "e:\home\brz12\web\teste\media\images\produtos\madeira" & "\foto"
'Busca a Imagem 
Jpeg.Open Path
'Especifica o tamanho da imagem, nesse caso ela ficará 50% menor 
Jpeg.Width = Jpeg.OriginalWidth / 2 
Jpeg.Height = Jpeg.OriginalHeight / 2 
'Esse método é opcional, usado para melhorar o visual da imagem 
Jpeg.Sharpen 1, 150 
'Cria um thumbnail e o grava no caminho abaixo 
Jpeg.Save "e:\home\brz12\web\teste\media\images\produtos\madeira"

Estou tendo o seguinte erro '800a0002'.The system cannot find the file specified.

Este erro e apontado na linha "Jpeg.Open path"

 

Ou seja, não está achando a imagem neste local...mas a imagem está sendo enviada para esta pasta.

 

Esta certo a forma na qual especifiquei o nome do campo que contem o nome da foto?

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ted K, nada feito! <_<

 

To tendo erro exatamente na linha que abre o arquivo que foi enviado.

Erro: The filename, directory name, or volume label syntax is incorrect.

Jpeg.Open Path

Tomei a liberdade de passar todo o script para tentar me ajudar.

 

Tentei colocar "&foto" e tambem coloquei "&caminho_foto", ambos deram o mesmo erro.

 

Tenho quatro pastas diferentes para o arquivo ser enviado, no caso do thumbnail tambem preciso que ele seja gravado de acordo com o campo "cat_id".

 

<!-- #include file = "upload_funcoes.asp" -->
<%
' Chamando Funções, que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando os Dados Digitados ----------------------
nome = UploadRequest.Item("nome").Item("Value")
cat_id = UploadRequest.Item("cat_id").Item("Value")
codigo = UploadRequest.Item("codigo").Item("Value")
descricaog = UploadRequest.Item("descricaog").Item("Value")
dimensoes = UploadRequest.Item("dimensoes").Item("Value")
foto = UploadRequest.Item("foto").Item("Value")
disp = UploadRequest.Item("disp").Item("Value")

' Tipo de arquivo que esta sendo enviado
tipo_foto = UploadRequest.Item("foto").Item("ContentType")

' Caminho completo dos arquivos enviados
caminho_foto = UploadRequest.Item("foto").Item("FileName")

' Nome dos arquivos enviados
nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))

' Conteudo binario dos arquivos enviados
foto = UploadRequest.Item("foto").Item("Value")

' pasta onde as imagens serao guardadas
if cat_id = 1 then
pasta = Server.MapPath("../../media/images/produtos/madeira/")
nome_foto = "/"&nome_foto
else if cat_id = 2 then
pasta = Server.MapPath("../../media/images/produtos/vidro/")
nome_foto = "/"&nome_foto
else if cat_id = 3 then
pasta = Server.MapPath("../../media/images/produtos/porcelana/")
nome_foto = "/"&nome_foto
else if cat_id = 4 then
pasta = Server.MapPath("../../media/images/produtos/refratario/")
nome_foto = "/"&nome_foto
end if
end if
end if
end if

' pasta + nome dos arquivos
cfoto = nome_foto

' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close
end if

' Conecta-se ao Banco de Dados
Dim lojaDB
set lojaDB = Server.CreateObject("ADODB.Connection")
lojaDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\home\brz12\dados\loja.mdb;"
lojaDB.open

' cadastra os dados no banco de dados
sql = "INSERT INTO produtos(cat_id,nome,descricaog,codigo,dimensoes,foto,disp) VALUES('" & cat_id & "','" & nome & "','" & descricaog & "','" & codigo & "','" & dimensoes & "','" & cfoto & "','" & disp & "')"
lojaDB.Execute(sql)

'Criando o thumbnail: 
Set Jpeg = Server.CreateObject("Persits.Jpeg") 
Path = "e:\home\brz12\web\media\images\produtos\madeira\" &caminho_foto
'Busca a Imagem 
Jpeg.Open Path
'Especifica o tamanho da imagem, nesse caso ela ficará 50% menor 
Jpeg.Width = Jpeg.OriginalWidth / 2 
Jpeg.Height = Jpeg.OriginalHeight / 2 
'Esse método é opcional, usado para melhorar o visual da imagem 
Jpeg.Sharpen 1, 150 
'Cria um thumbnail e o grava no caminho abaixo 
Jpeg.Save "e:\home\brz12\web\media\images\produtos\madeira" 

' Redireciona após 2 segundos
response.write "<br><br>Aguarde...Cadastrando produto...<br>"
response.write "<meta http-equiv='refresh' content='2; url=confirma.asp'/>"
response.write jpeg.SendBinary 
%>

 

Desculpe pela insistência, e que só falta isto pra finalizar.

 

obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em Jpeg.Open você tem passar o caminho físico da foto no seu servidor (o endereço completo de onde ela foi salva no servidor, informando até mesmo o nome do arquivo).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos!

 

Já estou conseguindo fazer o upload do arquivo e o thumbnail já está sendo gerado! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Agora surgem outras duvidas.

 

Estou pegando o nome do arquivo desta forma:

strFileName = upl.ShortFileName

 

Desta maneira recebo TAMBÉM A EXTENSÃO DO ARQUIVO.

 

O nome do thumbnail está sendo gerado desta forma:

Jpeg.Save "e:\home\brz12\web\media\images\" &strFileName & "_th.jpg"

 

Mas acontece que tenho então este resultado:

nomedoarquivo.jpg_th.jpg

 

Como faço para receber apenas o nome do arquivo sem a extensão???

 

Tenho que colocar ".jpg" na linha do Jpeg.Save senão o arquivo fica como "desconhecido".

 

Obrigado! Acho que hoje deixo este script redondo! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jpeg.Save "e:\home\brz12\web\media\images\" &strFileName & "_th.jpg"

remove essa parte _th.jpg, deixando assim:

 

Jpeg.Save "e:\home\brz12\web\media\images\" &strFileName & ""

Compartilhar este post


Link para o post
Compartilhar em outros sites

Loko da Web,

 

Preciso que fique desta forma:

 

NOME_DO_ARQUIVO_TH.JPG

 

Ou seja, pegar o nome original do arquivo e adicionar "_th" ANTES DA EXTENSÃO para que eu saiba que se trata do Thumbnail, entende?

 

Da forma que disse, ele gera o thumbnail com o nome do arquivo grande e acaba gravando em cima se estiver na mesma pasta.

 

Alguem pode me ajudar?

 

Jpeg.Save "e:\home\brz12\web\media\images\" &strFileName & "_th.jpg"

remove essa parte _th.jpg, deixando assim:

 

Jpeg.Save "e:\home\brz12\web\media\images\" &strFileName & ""

Compartilhar este post


Link para o post
Compartilhar em outros sites

<!-- #include file = "upload_funcoes.asp" -->
<%
' Chamando Funções, que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando os Dados Digitados ----------------------
nome = UploadRequest.Item("nome").Item("Value")
cat_id = UploadRequest.Item("cat_id").Item("Value")
codigo = UploadRequest.Item("codigo").Item("Value")
descricaog = UploadRequest.Item("descricaog").Item("Value")
dimensoes = UploadRequest.Item("dimensoes").Item("Value")
foto = UploadRequest.Item("foto").Item("Value")
disp = UploadRequest.Item("disp").Item("Value")

' Tipo de arquivo que esta sendo enviado
tipo_foto = UploadRequest.Item("foto").Item("ContentType")

' Caminho completo dos arquivos enviados
caminho_foto = UploadRequest.Item("foto").Item("FileName")

' Nome dos arquivos enviados
nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))

' Conteudo binario dos arquivos enviados
foto = UploadRequest.Item("foto").Item("Value")

' pasta onde as imagens serao guardadas
if cat_id = 1 then
pasta = Server.MapPath("../../media/images/produtos/madeira/")
nome_foto = "/"&nome_foto
else if cat_id = 2 then
pasta = Server.MapPath("../../media/images/produtos/vidro/")
nome_foto = "/"&nome_foto
else if cat_id = 3 then
pasta = Server.MapPath("../../media/images/produtos/porcelana/")
nome_foto = "/"&nome_foto
else if cat_id = 4 then
pasta = Server.MapPath("../../media/images/produtos/refratario/")
nome_foto = "/"&nome_foto
end if
end if
end if
end if

' pasta + nome dos arquivos
cfoto = nome_foto

' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close
end if

' Conecta-se ao Banco de Dados
Dim lojaDB
set lojaDB = Server.CreateObject("ADODB.Connection")
lojaDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\home\brz12\dados\loja.mdb;"
lojaDB.open

' cadastra os dados no banco de dados
sql = "INSERT INTO produtos(cat_id,nome,descricaog,codigo,dimensoes,foto,disp) VALUES('" & cat_id & "','" & nome & "','" & descricaog & "','" & codigo & "','" & dimensoes & "','" & cfoto & "','" & disp & "')"
lojaDB.Execute(sql)

'Criando o thumbnail: 
Set Jpeg = Server.CreateObject("Persits.Jpeg") 
Path = "e:\home\brz12\web\media\images\produtos\madeira\" &caminho_foto
'Busca a Imagem 
Jpeg.Open Path
'Especifica o tamanho da imagem, nesse caso ela ficará 50% menor 
Jpeg.Width = Jpeg.OriginalWidth / 2 
Jpeg.Height = Jpeg.OriginalHeight / 2 
'Esse método é opcional, usado para melhorar o visual da imagem 
Jpeg.Sharpen 1, 150 
'Cria um thumbnail e o grava no caminho abaixo 
Jpeg.Save "e:\home\brz12\web\media\images\produtos\madeira" 

' Redireciona após 2 segundos
response.write "<br><br>Aguarde...Cadastrando produto...<br>"
response.write "<meta http-equiv='refresh' content='2; url=confirma.asp'/>"
response.write jpeg.SendBinary 
%>

ricky, este é o cod que esta utilizando no momento ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não! Estou usando SafileUp e AspImage.

O novo script é este:

<%
Dim lojaDB
set lojaDB = Server.CreateObject("ADODB.Connection")
lojaDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\home\brz12\dados\loja.mdb;"
lojaDB.open

Set upl = Server.CreateObject("SoftArtisans.FileUp")
upl.Path = "e:\home\brz12\web\teste\media\images"

strFileName = upl.ShortFileName
strNome = upl.Form("nome")
strCategoria = upl.Form("categoria")
strCodigo = upl.Form("codigo")
strDescricao = upl.Form("descricao")
strDimensoes = upl.Form("dimensoes")
strDisp = upl.Form("disp")

upl.MaxBytes = 614400
If Request.TotalBytes > upl.MaxBytes then
  Response.Write "Arquivo muito grande para ser enviado. Máximo de 600kb."
Else 
  upl.Save
  ' cadastra os dados no banco de dados
	sql = "INSERT INTO produtos(cat_id,nome,descricaog,codigo,dimensoes,foto,disp) VALUES('" & strCategoria & "','" & strNome & "','" & strDescricao & "','" & strCodigo & "','" & strDimensoes & "','" & strFileName & "','" & strDisp & "')"
	lojaDB.Execute(sql)
End if
	'Criando o thumbnail: 
	Set Jpeg = Server.CreateObject("Persits.Jpeg") 
	'Caminho da Imagem 
	Path = "e:\home\brz12\web\teste\media\images\" &strFileName 
	'Busca a Imagem 
	Jpeg.Open Path
	'Especifica o tamanho da imagem, nesse caso ela ficará 50% menor 
	Jpeg.Width = 200	
	Jpeg.Height = 128
	'Esse método é opcional, usado para melhorar o visual da imagem 
	Jpeg.Sharpen 1, 150 
	'Cria um thumbnail e o grava no caminho abaixo 
	Jpeg.Save "e:\home\brz12\web\media\images\" &strFileName & ""
	'Para enviar o thumbnail para o browser do cliente utilize o método SendBinary: 
	Response.Write jpeg.SendBinary
	Set Jpeg = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ricky, o que podemos fazer é tentar renomear o arquivo, nunca fiz com fileup... mas, vamos testar.

 

strFileName = upl.ShortFileName

Na linha acima faz o seguinte:

 

strFileName = upl."/TH"& day(now) &""& month(now) &""& year(now) &""& hour(now) &""& minute(now) &""& second(now) &".jpg"

Testa dessa maneira acima, e poste o resultado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.