example of saving picturebox as png no dll's please modules and classes only....
Printable View
example of saving picturebox as png no dll's please modules and classes only....
What have you done yourself, beside begging for complete solutions?
ouch that felt a little hostile why such hostility my bad bro i meant no disrespect by the ? i do apolagize for whatever i said ......... ill post my code im using tho i dont take credit for code i didnt write but all my debuging has done no good all i can think of is the stdpicture is my error being as that when debugged on the savepictur line it say in the function declarations the picture = nothing hence why im sure its saving as nothing ......... but what i find strange is the filename = "" but on down it does use the specified called filename from call for the function weird i thought but the type of fine is there in the function declartions as .png or whatever type im trying to save and yes my wording may not be proper i am self tought i have tryed to adapt and learn but im ok with code just some stuff ive never done i dont know how and as a self tought trial error and help is the only way i learn kinda like through repetition the more times i do the functions calls declaration the more i remeber them and understand how they work ... but ne ways to my code im trying to use........this is my module
this is how i call it which im sure is right .... cuz in the call the picture = 912808929 and the filname is ther and type is there just when i debug the function the filename doesnt show in its declarations it shows "" and the pict = nothing i use picture1 which is a picturebox perhaps i should have ref a wia.dll or somthing im not sure but seems like the picture1.image should be also 19808980 in this part as shown below and seems the filename would show but only the type shows pictype = ".png" there belowCode:Option Explicit
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
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 As EncoderParameter
End Type
Private Declare Function GdiplusStartup Lib "GDIPlus" (token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As Long
Private Declare Function GdiplusShutdown Lib "GDIPlus" (ByVal token As Long) As Long
Private Declare Function GdipCreateBitmapFromHBITMAP Lib "GDIPlus" (ByVal hbm As Long, ByVal hPal As Long, BITMAP As Long) As Long
Private Declare Function GdipDisposeImage Lib "GDIPlus" (ByVal Image As Long) As Long
Private Declare Function GdipSaveImageToFile Lib "GDIPlus" (ByVal Image As Long, ByVal FileName As Long, clsidEncoder As GUID, encoderParams As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal Str As Long, id As GUID) As Long
Private Declare Function CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal cb As Long) As Long
Public Sub SavePic(ByVal pict As StdPicture, ByVal FileName As String, PicType As String, _
Optional ByVal Quality As Byte = 80, _
Optional ByVal TIFF_ColorDepth As Long = 24, _
Optional ByVal TIFF_Compression As Long = 6)
Screen.MousePointer = vbHourglass
Dim tSI As GdiplusStartupInput
Dim lRes As Long
Dim lGDIP As Long
Dim lBitmap As Long
Dim aEncParams() As Byte
On Error GoTo ErrHandle:
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
Select Case PicType
Case ".jpg"
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
ReDim aEncParams(1 To Len(tParams))
Call CopyMemory(aEncParams(1), tParams, Len(tParams))
Case ".png"
CLSIDFromString StrPtr("{557CF406-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
ReDim aEncParams(1 To Len(tParams))
Case ".gif"
CLSIDFromString StrPtr("{557CF402-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
ReDim aEncParams(1 To Len(tParams))
Case ".tiff"
CLSIDFromString StrPtr("{557CF405-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
tParams.count = 2
ReDim aEncParams(1 To Len(tParams) + Len(tParams.Parameter))
With tParams.Parameter
.NumberOfValues = 1
.type = 4
CLSIDFromString StrPtr("{E09D739D-CCD4-44EE-8EBA-3FBF8BE4FC58}"), .GUID
.Value = VarPtr(TIFF_Compression)
End With
Call CopyMemory(aEncParams(1), tParams, Len(tParams))
With tParams.Parameter
.NumberOfValues = 1
.type = 4
CLSIDFromString StrPtr("{66087055-AD66-4C7C-9A18-38A2310B8337}"), .GUID
.Value = VarPtr(TIFF_ColorDepth)
End With
Call CopyMemory(aEncParams(Len(tParams) + 1), tParams.Parameter, Len(tParams.Parameter))
Case ".bmp"
SavePicture pict, FileName
Screen.MousePointer = vbDefault
Exit Sub
End Select
lRes = GdipSaveImageToFile(lBitmap, StrPtr(FileName), tJpgEncoder, aEncParams(1))
GdipDisposeImage lBitmap
End If
GdiplusShutdown lGDIP
End If
Screen.MousePointer = vbDefault
Erase aEncParams
Exit Sub
ErrHandle:
Screen.MousePointer = vbDefault
MsgBox "Error" & vbCrLf & vbCrLf & "Error No. " & Err.Number & vbCrLf & " Error .Description: " & Err.Description, vbInformation Or vbOKOnly
End Sub
this is how i call itCode:SavePic(ByVal pict As StdPicture, ByVal FileName As String, PicType As String, _
Code:SavePic Picture1.Image, "C:\Test.png", ".png"
If you break on your function, on the "Public Sub ... " line, then hover over the parameter names, you should expect to see Nothing, "", etc for ByVal parameters. Once you press F8 to get to the next executable line, then the Nothing, "", etc should no longer be seen.Quote:
but what i find strange is the filename = "" but on down it does use the specified called filename from call for the function weird i thought but the type of fine is there in the function declartions as .png or whatever type im trying to save
Does that help for the next step in your troubleshooting?
As far as what is or is not being saved, does c:\test.png contain data? I'm guessing it does and your problem may simply be that Picture1.AutoRedraw = False?
And not intended to be hostile -- jeez Josh, sprinkle a bit more punctuation into those long posts :)
Given your recent questions I feel bound to ask, what is in the picture that you are trying to save? What is it a picture of?
"A picture is worth a thousand words"
And we got both
how to save picture in picturebox? I input pic1 on picturebox.1, and pic1 is processed to change its pixel and change to pic2 in picturebox2. Then i use commondialog to save pic2. i'd use this code, but id didn't work.
Code:Private Sub save_Click()
CommonDialog1.ShowSave
If CommonDialog1.FileName <> "" Then
Open CommonDialog1.FileName For Output As #1
Write #1, outputgambar.Picture
Close #1
End If
End Sub
Kind of confused about the previous 2 posts. If there is a question, start your own thread as it appears those last two posts do not refer to the original thread owner's question.
P.S. You can't save a picture that way. You may want to start your own thread on how to use VB's SavePicture function.