SALVAR DE BMP PARA JPG. ARQUIVO AINDA TA GRANDE...

USUARIO.EXCLUIDOS 01/08/2007 11:29:40
#228755
Tem alguma outra forma de converter BMP em JPG fora o jeito que o artigo abaixo explica?

http://www.vbmania.com.br/vbmania/vbmdetail.php?varID=1220&TxtSearch=gdi&CmbSort=&varPagina=1

Do jeito que o artigo ensina, uma foto .bmp de 633KB fica com 169KB.
Usando o Paint do Windows, salvei como JPG e os mesmos 633KB caíram para 37KB. E pra um acervo de 1000 fotos, faz mta diferença...

[ ]ÂÂ's

USUARIO.EXCLUIDOS 01/08/2007 11:58:32
#228773

Cara, eu to tentando mais ou menos a mesma coisa..

inclusive, to tentando até, comunicar o VB com o Paint...pra tentar fazer isso..mas ta complicado

vamos nos ajudar e tentar matar esse LEÃO

Boa sorte
USUARIO.EXCLUIDOS 01/08/2007 12:13:19
#228780
Outros softwares (como Corel, Photo, etc) também conseguem converter. Acho que o esquema é usar API. Mas tá meio complicado achar...
USUARIO.EXCLUIDOS 01/08/2007 12:33:08
#228787


é eu sei...eu tenho como fazer com photoshop sem problemas, mas daí o cliente tem que ter o programa tb ..entendeu..por isso ..queria algo no Paint
USUARIO.EXCLUIDOS 01/08/2007 12:52:32
#228794
Resposta escolhida
Olha só... segue em anexo um projeto tipo o Paint.

Ele abre arquivos e depois vc consegue salvar com várias extensões.

Fiz alguns testes, ele não foi tão eficiente quanto o Paint, mas chegou perto, foi melhor do que vc postou.

O Gif que ele salva sim ficou muito pequeno.

Dê uma olhada.
USUARIO.EXCLUIDOS 01/08/2007 13:12:04
#228800
O Paint salva com um tamanho menor porque ele salva com uma qualidade menor.

No artigo ali a função aceita um parametro de qualidade, ja tentou colocar um valor menor nele pra ver que tamanho fica a imagem?

Vai testando diminuir pra ver até onde fica aceitavel a qualidade da imagem.
LCSD 01/08/2007 13:30:54
#228809
DLL para converter BMP p/ JPG

Dê uma olhada nesta DLL e veja se os ajuda.

Eu ví em um outro site, gostei e nã otive problemas.
Tava com PAU, fiz umas pequenas alterações e funcionou legal para o que eu precisava.
USUARIO.EXCLUIDOS 01/08/2007 15:15:48
#228840
O programa postado pelo MARCELOHF até que converte legal. De 633KB(em BMP) ele vai para 64KB (em JPG). Embora o paint salve em 37KB.

Em relação à qualidade, não vi diferença em relação às fotos. Já fi perder qualidade quando são PrintScreen.

Em relação à biblioteca 'converter.dll', acho que não estou sabendo usar. Copiei para System32, registrei e usei no meu commandbutton, mas dá um erro: 'Only comments may appear after End Sub, Edn Function, or End Property'. O VB nem deixa rodar o programa.

Usei no meu programa assim:



[c]Private Sub Command1_Click()

'Função usada para converter de BMP para JPG.
Public Declare Function BMPToJPG Lib "converter.dll" (ByVal InputFilename As String, ByVal OutputFilename As String, ByVal Quality As Long) As Integer

'Converte do formato BMP para o formato JPG.
BMPToJPG Diretorio_Temp & "Imagem.BMP", Diretorio_Temp & "Imagem.JPG", 10 'Qualidade Da imagem JPG

End Sub


[/c]

Hoje com ajuda do fórum fiz um programa que pega uma foto já em JPG, numa resolução bem grande, e redimensiona para 800x600. Só que o programa salva a foto no formato BMP com extenção JPG (tipo quando vc renomeia no windows explorer FOTLEGAL.BMP para FOTOLEGAL.JPG. Ou seja, vc mudou somente a extenção, mas o formato ainda é BMP).

Abaixo o código que redimensiona:



[c]Private Sub Command1_Click()

'Colocando a foto no controle Picture1
Picture1.Picture = LoadPicture("d:\FOTOLEGAL.jpg")

End Sub


Private Sub Command2_Click()

'Redimensionando para o mesmo tamanho de Picture2
Picture2.PaintPicture Picture1.Picture, 0, 0, Picture2.Width, Picture2.Height

'Salvando...
SavePicture Picture2.Image, "d:\FOTOLEGALxxx.jpg"

End Sub


[/c]

Ele redimensiona sem problemas, mas embora eu coloque pra salvar com extenção JPG, fica no formato BMP e, consequentemente, o tamanho aumenta.

Aí resolvi então tentar converter de BMP pra JPG. Embora sejam dois trabalhos (redimensionar e depois converter de novo pra JPG) foi a única maneira que achei.

Será que existe a possibilidade de redimensionar as fotos pra 800x600 (que já estão em JPG) sem precisar salvar em BMP pra não ter que converter novamtente pra JPG?

Enquanto não chego numa solução, uso um software que veio junto com meu scanner de 1995! (o software chama MGI PhotoSuite SE - Ver 1.06) Mas redimensiona que é uma beleza! é hiper levinho. Acho que o setup tem só 16MB. é um programa muito bom.

Então se esse programinha de 1995 redimensiona de qq tamanho pra 800x600 (além de outras resoluções), pq eu não posso!?!?

Esse é o problema...
LCSD 01/08/2007 16:02:03
#228852
Não faça a referÃÅ ncia no botão, faça a referência no TOPO da página de códigos... Acho que é nisso que o seu programa está se perdendo.


Poois na hora que o VB faz a "pré-compilação" do seu código para rodar, ele verá essa declaração no evento do botão e não vai entender bulhufas...
USUARIO.EXCLUIDOS 01/08/2007 16:40:02
#228868
Opa...

Tava dando erro pq a função tinha que estar dentro de um módulo...
Criei um módulo, aí funcionou... Converte que é uma beleza e fica do mesmo tamanho de uma que foi convertida no Paint. Ficou perfeito. Vlw!

Agora só falta redimensionar uma figura que já está no formado JPG e depois de redimensionada ela continuar no formato JPG.
Vi que o programa que o MARCELOHF passou, faz isso. Mas ainda não consegui entender como...
USUARIO.EXCLUIDOS 01/08/2007 16:41:33
#228870
Pelo que entendi, vc só deseja redimencionar uma foto .jpg? é isso?

Então, abra uma imagem dentro de um Picture box e coloque este código (feito pelo Matioli).

  Public Sub Redimenciona(img As Image, Optional largura As Double, Optional altura As Double)
Dim vFator As Double
img.Stretch = False
vFator = largura / img.Width
img.Stretch = True
If img.Height * vFator > altura Then
img.Stretch = False
vFator = altura / img.Height
img.Stretch = True
ElseIf img.Width * vFator > largura Then
img.Stretch = False
vFator = largura / img.Width
img.Stretch = True
End If
img.Height = img.Height * vFator
img.Width = img.Width * vFator
img.Left = (largura / 2) - (img.Width / 2)
img.Top = (altura / 2) - (img.Height / 2)
End Sub


E para chamar a foto, faça assim:

   Image1.Stretch = True
Set Image1.Picture = LoadPicture(C:\sua pasta\sua foto.jpg)
Redimenciona Image1, Picture1.Width, Picture1.Height


Talvez isso ajude.
Página 1 de 2 [19 registro(s)]
Tópico encerrado , respostas não são mais permitidas