COMO CONVERTER IMAGEM

HANZO 13/07/2005 13:04:39
#93906
Olá Pessoal,
Alguém sabe como fazer o meu aplicativo que captura imagem no formato bmp converter para jpg, houvi falar e já um código usando a gdiplus.dll, Mas eu acho que essa dll não funciona em win98.
Se alguém puder me ajudar, agradeço.
USUARIO.EXCLUIDOS 13/07/2005 13:13:30
#93913
Você pode carregar a imagem bmp em um picturebox, e em sequida salvar no formato jpg....
Ex:
Para carregar
picture1.picture = LoadPicture("C:    este.[txt-color=#0000ff]BMP[/txt-color]")


Logo em seguinda, quando a imagem estiver no picture para salvar faça assim
SavePicture Picture1, "C:    estefinal.[txt-color=#ff0000]JPG[/txt-color]"

Espero que tenha entendido
PAGANINI 13/07/2005 13:21:37
#93919
Sim o Gemanir está certo, a instrução SAVEPICTURE salva uma imagem em disco. Mas se confundiu ao informar que dá para salvar em JPG. A microsoft não adquiriu a licença junto aos proprietários do método de compactação a criação de arquivos JPG e GIF, apenas adquiriu licença de visualixação no VB6. O que impede o VB6 de salvar arquivos em JPG e GIF. Para isto você precisa usar códigos de terceiros.

Já o VB.NET está apto a usar e salvar os arquivos de images neste formato.

USUARIO.EXCLUIDOS 13/07/2005 22:02:36
#94022
Resposta escolhida
Usando API do gdiplus.dll...
...coloque num módulo:
'GRAVAR IMAGEM COMO JPEG
Public Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type

Public Type GdiplusStartupInput
GdiplusVersion As Long
DebugEventCallback As Long
SuppressBackgroundThread As Long
SuppressExternalCodecs As Long
End Type

Public Type EncoderParameter
GUID As GUID
NumberOfValues As Long
type As Long
Value As Long
End Type

Public Type EncoderParameters
Count As Long
Parameter As EncoderParameter
End Type

Public Declare Function GdiplusStartup Lib "GDIPlus" (token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As Long
Public Declare Function GdiplusShutdown Lib "GDIPlus" (ByVal token As Long) As Long
Public Declare Function GdipCreateBitmapFromHBITMAP Lib "GDIPlus" (ByVal hbm As Long, ByVal hpal As Long, Bitmap As Long) As Long
Public Declare Function GdipDisposeImage Lib "GDIPlus" (ByVal Image As Long) As Long
Public Declare Function GdipSaveImageToFile Lib "GDIPlus" (ByVal Image As Long, ByVal filename As Long, clsidEncoder As GUID, encoderParams As Any) As Long
Public Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, id As GUID) As Long
Public Function SaveJPG(ByVal pict As StdPicture, ByVal filename As String, Optional ByVal quality As Byte = 80) As Long
Dim tSI As GdiplusStartupInput
Dim lRes As Long
Dim lGDIP As Long
Dim lBitmap As Long

tSI.GdiplusVersion = 1
lRes = GdiplusStartup(lGDIP, tSI)

If lRes = 0 Then
lRes = GdipCreateBitmapFromHBITMAP(pict.Handle, 0, lBitmap)

If lRes = 0 Then
Dim tJpgEncoder As GUID
Dim tParams As EncoderParameters
CLSIDFromString StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
tParams.Count = 1

With tParams.Parameter
CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"), .GUID
.NumberOfValues = 1
.type = 4
.Value = VarPtr(quality)
End With

lRes = GdipSaveImageToFile(lBitmap, StrPtr(filename), tJpgEncoder, tParams)
GdipDisposeImage lBitmap
End If
GdiplusShutdown lGDIP
End If

SaveJPG = lRes
If lRes Then Err.Raise 98775, "GDI+.SaveJPG", "Não foi possivel gravar imagem, erro nº " & lRes
End Function


Depois de carregar a imagem no Picture1, pode gravar assim:
Private Sub Command1_Click()
SaveJPG Picture1.Picture, "c:\Arquivo.jpg", 100
End Sub

O 100 é a qualidade de compressão, quanto mais baixo este valor, pior a qualidade.
USUARIO.EXCLUIDOS 14/07/2005 00:45:40
#94035
HANZO,
Para salvar um bmp em gif veja o link CONVERTENDO BMP PARA GIF TRANSPARENTE
HANZO 14/07/2005 08:30:38
#94061
Olá pessoal,
Obrigado pelas respostas , todas serão testadas e logo vou postar o resultado.Daí então encerro o tópico.
HANZO 14/07/2005 08:49:28
#94067
Olá novamente,
Sobre a dica do Miguel Angelo, eu testei e me da o seguinte erro, "File not found :GDIPLUS"
Como faço para instalar essa dll, apesar dela existir em minha máquina ,pois veio junto com o framework, não consigo tirar a proveito da sua funcionalidade.Estou usando vb 5 com win 98.
USUARIO.EXCLUIDOS 14/07/2005 12:10:38
#94122
Hanzo dê uma olhada no site www.vbaccelerator.com
USUARIO.EXCLUIDOS 14/07/2005 19:01:44
#94187
Viva Hanzo, sinceramente não sei, pois eu uso o XP e nunca testei em versões anteriores.
Mas pode tentar fazer o download do gdiplus.dll e copiar para a pasta system32 ou para a mesma pasta da sua aplicação.
Pode fazer o download aqui: GdiPlus.dll
USUARIO.EXCLUIDOS 14/07/2005 19:13:36
#94205
Hanzo, não se esqueça também de fazer referência ao OLE Automation no seu projecto!
JEAN.JEDSON 14/07/2005 19:27:17
#94210
amigo HANZO...

acabei de lhe enviar um projeto por email, para manipular JPG com classes.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas