كيف يمكن للمرء أن فتح PNG (صورة) ملف مع VB6 إلى مجموعة RGB أو R، G، B صفائف
سؤال
وكيف يمكن للمرء أن فتح PNG تنسيق ملف الصورة مع VB6؟ من الناحية المثالية، I (وهذا هو بلدي العملاء) ترغب في الحصول على ملف PNG مفتوحة وضعها في R منفصلة (محرر)، G (reen) و (ب) (LUE) المصفوفات.
وVB6 ليس أداة بلدي المفضل (لعدم وجود المعرفة) وأكون بسعادة غامرة إذا كان بعض يمكن لأحد أن لي نقطة في الاتجاه الصحيح لإيجاد حل VB6.
المحلول
وشكرا لربط، على الرغم من أنها ليست الرجل VB بطلاقة (المزيد من C & ASM النكهات)، رمز يبدو جدا تتمحور BMP. لا بابوا نيو غينيا.
إذا كان هذا هو الحال، لا بد لي أن تعتقد أنك اقترح على الرابط لأنها ستكون مسألة بسيطة لجعل PNG'able الرمز، ولكن أنا لا أعرف كيفية التعامل مع ذلك.
نصائح أخرى
هل يمكن أن تحاول المصدر المفتوح FreeImage مشروع .
'1 form with :
' 1 picturebox : name=Picture1
' 1 commandbutton : name=Command1
Option Explicit
Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, ByRef lpObject As Any) As Long
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, ByRef lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, ByRef lpBits As Any) As Long
Private mbmpBits() As Byte
Private mudtBmp As BITMAP
Private Sub Command1_Click()
ShowRed
' ShowGreen
' ShowBlue
End Sub
Private Sub Form_Load()
Picture1.Picture = LoadPicture("c:\temp\pic.bmp")
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set Form1 = Nothing
End Sub
Private Sub ShowRed()
Dim lngX As Long, lngY As Long
ReadBits
For lngX = 0 To mudtBmp.bmWidth - 1
For lngY = 0 To mudtBmp.bmHeight - 1
mbmpBits(0, lngX, lngY) = 0
mbmpBits(1, lngX, lngY) = 0
Next lngY
Next lngX
ShowBits
End Sub
Private Sub ShowGreen()
Dim lngX As Long, lngY As Long
ReadBits
For lngX = 0 To mudtBmp.bmWidth - 1
For lngY = 0 To mudtBmp.bmHeight - 1
mbmpBits(0, lngX, lngY) = 0
mbmpBits(2, lngX, lngY) = 0
Next lngY
Next lngX
ShowBits
End Sub
Private Sub ShowBlue()
Dim lngX As Long, lngY As Long
ReadBits
For lngX = 0 To mudtBmp.bmWidth - 1
For lngY = 0 To mudtBmp.bmHeight - 1
mbmpBits(1, lngX, lngY) = 0
mbmpBits(2, lngX, lngY) = 0
Next lngY
Next lngX
ShowBits
End Sub
Private Sub ReadBits()
GetObject Picture1.Picture.Handle, Len(mudtBmp), mudtBmp
With mudtBmp
ReDim mbmpBits(0 To (.bmBitsPixel \ 8) - 1, 0 To .bmWidth - 1, 0 To .bmHeight - 1) As Byte
GetBitmapBits Picture1.Picture.Handle, .bmWidthBytes * .bmHeight, mbmpBits(0, 0, 0)
End With 'mudtBmp
End Sub
Private Sub ShowBits()
SetBitmapBits Picture1.Picture.Handle, mudtBmp.bmWidthBytes * mudtBmp.bmHeight, mbmpBits(0, 0, 0)
Erase mbmpBits
Picture1.Refresh
End Sub
لا تنتمي إلى StackOverflow