Ayuda con visual basic 6 D:

Blackfox09

Bovino maduro
#1
hola amogos del corral hace tiempo ke no estoy aki en el foro pero esstoy de regreso :metal:

soy novato en esto de programacion y comence con visual basic 6 y mi duda es como puedo hacer ke guarde un archivo en formato .PNG de preferencia o si no en formato .jpg desde una picture box

si alguien me pudiera ayudar se los agradeceria ñ_ñ

salu2
 
#2
http://www.recursosvisualbasic.com.ar/htm/tutoriales/control_picturebox.htm
http://www.pocketpcdn.com/articles/savejpeg.html
http://www.recursosvisualbasic.com.ar/htm/ocx-componentes-activex-dll/102-modulo-para-leer-png.htm
http://www.foro.vb-mundo.com/f25/insertar-imagen-de-picturebox-mysql-visual-b-15424/
http://www.recursosvisualbasic.com.ar/htm/vb-net/24-metodo-save-objeto-bitmap.htm
Option Explicit

' ----==== GDIPlus Const ====----
Const GdiPlusVersion As Long = 1
Private Const EncoderParameterValueTypeLong As Long = 4
Private Const EncoderQuality As String = _
"{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"

' ----==== Sonstige Types ====----
Public Enum MimeType
JPG = 0
GIF = 1
PNG = 2
BMP = 3
End Enum

Private Type PICTDESC
cbSizeOfStruct As Long
picType As Long
hgdiObj As Long
hPalOrXYExt As Long
End Type

Private Type IID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type

Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type

' ----==== GDIPlus Types ====----
Private Type GDIPlusStartupInput
GdiPlusVersion As Long
DebugEventCallback As Long
SuppressBackgroundThread As Long
SuppressExternalCodecs As Long
End Type

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

Private Type EncoderParameters
Count As Long
Parameter(15) As EncoderParameter
End Type

Private Type ImageCodecInfo
Clsid As GUID
FormatID As GUID
CodecNamePtr As Long
DllNamePtr As Long
FormatDescriptionPtr As Long
FilenameExtensionPtr As Long
MimeTypePtr As Long
flags As Long
Version As Long
SigCount As Long
SigSize As Long
SigPatternPtr As Long
SigMaskPtr As Long
End Type

' ----==== GDIPlus Enums ====----
Public Enum Status 'GDI+ Status
OK = 0
GenericError = 1
InvalidParameter = 2
OutOfMemory = 3
ObjectBusy = 4
InsufficientBuffer = 5
NotImplemented = 6
Win32Error = 7
WrongState = 8
Aborted = 9
FileNotFound = 10
ValueOverflow = 11
AccessDenied = 12
UnknownImageFormat = 13
FontFamilyNotFound = 14
FontStyleNotFound = 15
NotTrueTypeFont = 16
UnsupportedGdiplusVersion = 17
GdiplusNotInitialized = 18
PropertyNotFound = 19
PropertyNotSupported = 20
ProfileNotFound = 21
End Enum

' ----==== GDI+ API Declarationen ====----
Private Declare Function GdiplusStartup Lib "gdiplus" _
(ByRef token As Long, ByRef lpInput As GDIPlusStartupInput, _
Optional ByRef lpOutput As Any) As Status

Private Declare Function GdiplusShutdown Lib "gdiplus" _
(ByVal token As Long) As Status

Private Declare Function GdipCreateBitmapFromFile Lib "gdiplus" _
(ByVal FileName As Long, ByRef Bitmap As Long) As Status

Private Declare Function GdipSaveImageToFile Lib "gdiplus" _
(ByVal image As Long, ByVal FileName As Long, _
ByRef clsidEncoder As GUID, _
ByRef encoderParams As Any) As Status

Private Declare Function GdipCreateHBITMAPFromBitmap Lib "gdiplus" _
(ByVal Bitmap As Long, ByRef hbmReturn As Long, _
ByVal background As Long) As Status

Private Declare Function GdipCreateBitmapFromHBITMAP Lib "gdiplus" _
(ByVal hbm As Long, ByVal hpal As Long, _
ByRef Bitmap As Long) As Status

Private Declare Function GdipGetImageEncodersSize Lib "gdiplus" _
(ByRef numEncoders As Long, ByRef Size As Long) As Status

Private Declare Function GdipGetImageEncoders Lib "gdiplus" _
(ByVal numEncoders As Long, ByVal Size As Long, _
ByRef Encoders As Any) As Status

Private Declare Function GdipDisposeImage Lib "gdiplus" _
(ByVal image As Long) As Status


Private Declare Function CLSIDFromString Lib "ole32" _
(ByVal str As Long, id As GUID) As Long

Private Declare Sub OleCreatePictureIndirect Lib "oleaut32.dll" _
(lpPictDesc As PICTDESC, riid As IID, ByVal fOwn As Boolean, _
lplpvObj As Object)

Private Declare Function lstrlenW Lib "kernel32" _
(lpString As Any) As Long

Private Declare Function lstrcpyW Lib "kernel32" _
(lpString1 As Any, lpString2 As Any) As Long

Private retStatus As Status
Private GdipToken As Long
Private GdipInitialized As Boolean

Private Function StartUpGDIPlus(ByVal GdipVersion As Long) As Status
Dim GdipStartupInput As GDIPlusStartupInput
GdipStartupInput.GdiPlusVersion = GdipVersion
StartUpGDIPlus = GdiplusStartup(GdipToken, GdipStartupInput, ByVal 0)
End Function

Private Function ShutdownGDIPlus() As Status
ShutdownGDIPlus = GdiplusShutdown(GdipToken)
End Function

Private Function Execute(ByVal lReturn As Status) As Status
Dim lCurErr As Status
If lReturn = Status.OK Then
lCurErr = Status.OK
Else
lCurErr = lReturn

End If
Execute = lCurErr
End Function

Public Function Convertir(ByVal Pic As StdPicture, _
ByVal FileName As String, Optional ByVal Quality As Long = 85, _
Optional ByVal FileType As MimeType = JPG) _
As Boolean

Dim retStatus As Status
Dim retVal As Boolean
Dim lBitmap As Long
'// Variable para el MimeType
Dim mimeT As String

Iniciar

If GdipInitialized = False Then Exit Function
' Erzeugt eine GDI+ Bitmap vom StdPicture Handle -> lBitmap
retStatus = Execute(GdipCreateBitmapFromHBITMAP(Pic.Handle, 0, _
lBitmap))

If retStatus = OK Then

Dim PicEncoder As GUID
Dim tParams As EncoderParameters

'// Seleccion de casos para el MimeType
Select Case FileType
Case JPG
mimeT = "image/jpeg"
Case GIF
mimeT = "image/gif"
Case PNG
mimeT = "image/png"
Case BMP
mimeT = "image/bmp"
End Select

'// Ermitteln der CLSID vom mimeType Encoder
retVal = GetEncoderClsid(mimeT, PicEncoder)
If retVal = True Then

If Quality > 100 Then Quality = 100
If Quality < 0 Then Quality = 0

' Initialisieren der Encoderparameter
tParams.Count = 1
With tParams.Parameter(0) ' Quality
' Setzen der Quality GUID
CLSIDFromString StrPtr(EncoderQuality), .GUID
.NumberOfValues = 1
.type = EncoderParameterValueTypeLong
.Value = VarPtr(Quality)
End With

' Speichert lBitmap als JPG
retStatus = Execute(GdipSaveImageToFile(lBitmap, _
StrPtr(FileName), PicEncoder, tParams))

If retStatus = OK Then
Convertir = True
Else
Convertir = False
End If
Else
Convertir = False
MsgBox "Konnte keinen passenden Encoder ermitteln.", _
vbOKOnly, "Encoder Error"
End If

' Lösche lBitmap
Call Execute(GdipDisposeImage(lBitmap))

Dim ret As Long

If GdipInitialized = True Then
ret = Execute(ShutdownGDIPlus)
End If
End If
End Function

Private Function GetEncoderClsid(MimeType As String, pClsid As GUID) _
As Boolean

Dim num As Long
Dim Size As Long
Dim pImageCodecInfo() As ImageCodecInfo
Dim j As Long
Dim buffer As String

Call GdipGetImageEncodersSize(num, Size)
If (Size = 0) Then
GetEncoderClsid = False
Exit Function
End If

ReDim pImageCodecInfo(0 To Size \ Len(pImageCodecInfo(0)) - 1)
Call GdipGetImageEncoders(num, Size, pImageCodecInfo(0))

For j = 0 To num - 1
buffer = Space$(lstrlenW(ByVal pImageCodecInfo(j).MimeTypePtr))

Call lstrcpyW(ByVal StrPtr(buffer), ByVal _
pImageCodecInfo(j).MimeTypePtr)

If (StrComp(buffer, MimeType, vbTextCompare) = 0) Then
pClsid = pImageCodecInfo(j).Clsid
Erase pImageCodecInfo
GetEncoderClsid = True
Exit Function
End If
Next j

Erase pImageCodecInfo
GetEncoderClsid = False
End Function

Private Sub Iniciar()
Dim ret As Long
ret = Execute(StartUpGDIPlus(1))
If ret = 0 Then
GdipInitialized = True
Else
MsgBox "El GDI no está inicializado", vbOKOnly, "GDI Error"
End If
End Sub
http://www.forosdelweb.com/f69/grabar-png-366113/
 
Arriba