Tokat-Reşadiye Teknik ve Endüstri Meslek Lisesi Bilişim Teknolojileri Alanı 12-D Sınıfı

Tokat-Reşadiye Teknik ve Endüstri Meslek Lisesi Bilişim Teknolojileri Alanı 12-D Sınıfı

Gökhan KILIÇ-Recep TÜRK
 
AnasayfaKapıTakvimGaleriSSSKayıt OlGiriş yap
Arama
 
 

Sonuç :
 
Rechercher çıkıntı araştırma
En son konular
» Leman Sam-Kıyamam Sana
Çarş. Mart 17, 2010 5:48 pm tarafından BTA

» Leman Sam-Rüzgar
Çarş. Mart 17, 2010 5:47 pm tarafından BTA

» Komik Videolar 3
Çarş. Mart 17, 2010 5:44 pm tarafından BTA

» Komik Videolar 2
Çarş. Mart 17, 2010 5:43 pm tarafından BTA

» Komik Videolar 1
Çarş. Mart 17, 2010 5:41 pm tarafından BTA

» Leman Sam - Anladım
Salı Mart 09, 2010 6:32 pm tarafından BTA

» Alışveriş Merkezinde Kız Kavgası
Ptsi Mart 08, 2010 11:35 am tarafından BTA

» Canı Sıkılan Anket Çözmeye
Cuma Mart 05, 2010 12:29 am tarafından BTA

» Samsung B3410W Ch@t
Perş. Mart 04, 2010 11:34 pm tarafından BTA

Tarıyıcı
 Kapı
 Indeks
 Üye Listesi
 Profil
 SSS
 Arama
Forumlar
Ortaklar
bedava forum

Paylaş | 
 

 Resim Verisini Resme Dönüştürmek

Önceki başlık Sonraki başlık Aşağa gitmek 
YazarMesaj
BTA
Admin
avatar

Mesaj Sayısı : 244
Points : 732
Reputation : 0
Kayıt tarihi : 28/02/10
Yaş : 25
Nerden Nerden : TOKAT/Reşadiye

MesajKonu: Resim Verisini Resme Dönüştürmek   Perş. Mart 04, 2010 12:55 pm

Resim Verisini Resme Dönüştürmek

Diskte kayıtlı herhangi bir resim dosyasını LoadPicture ile IPicture nesnesine dönüştürüp PictureBox da göstermek mümkündür. Fakat herhangi bir resim verisini dönüştürmeye yönelih hazır bir fonksiyon yoktur.

Bu örnekteki LoadPictureData fonksiyonu ile bu işlemi gerçekleştirebilirsiniz. Mesela TCP socket bağlantısı ile uzak bilgisayardaki resim verisini taşıyabilir veya hayalgücünüze bağlı olarak bir video görüntüsünü stream olarak aktarabilirsiniz.

Aşağıda, konuya ilişkin döküman kodları bulunmaktadır.

mdlLoadPicture.bas

Option Explicit

'//*******************************************************//
'// Author: Gokhan ERDOGDU
'// Created: 26 December 2009
'// mail: gokkhan_erdogdu@yahoo.com
'//*******************************************************//

Private Const S_OK = &H0
Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90
Private Const HIMETRIC_PER_INCH As Long = 2540
Private Const sIID_IPicture As String = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"
Private Const GMEM_MOVEABLE = &H2

' types
' =====================================================================
Private Type Guid
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type


' externals
' =====================================================================
Private Declare Function GlobalAlloc _
Lib "kernel32" _
(ByVal wFlags As Long, _
ByVal dwBytes As Long) As Long

Private Declare Function GlobalLock _
Lib "kernel32" _
(ByVal hMem As Long) As Long

Private Declare Function GlobalUnlock _
Lib "kernel32" _
(ByVal hMem As Long) As Long

Private Declare Function GlobalFree _
Lib "kernel32" _
(ByVal hMem As Long) As Long

Private Declare Sub CopyMemory _
Lib "kernel32" Alias "RtlMoveMemory" _
(ByRef Destination As Any, _
ByRef Source As Any, _
ByVal Length As Long)

Private Declare Function CreateStreamOnHGlobal _
Lib "ole32" _
(ByVal hGlobal As Long, _
ByVal fDeleteOnRelease As Boolean, _
ByRef ppstm As Any) As Long

Private Declare Function OleLoadPicture _
Lib "olepro32" _
(pStream As Any, _
ByVal lSize As Long, _
ByVal fRunmode As Long, _
riid As Any, _
ppvObj As Any) As Long

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

Private Declare Function GetDC _
Lib "user32" _
(ByVal hWnd As Long) As Long

Private Declare Function ReleaseDC _
Lib "user32" _
(ByVal hWnd As Long, _
ByVal hdc As Long) As Long

Private Declare Function GetDeviceCaps _
Lib "gdi32" _
(ByVal hdc As Long, _
ByVal nIndex As Long) As Long

Private Declare Function MulDiv _
Lib "kernel32" _
(ByVal nNumber As Long, _
ByVal nNumerator As Long, _
ByVal nDenominator As Long) As Long

Private Function MAP_LOGHIM_TO_PIX(ByVal x As Long, ByVal ppli As Long) As Long
MAP_LOGHIM_TO_PIX = MulDiv(ppli, x, HIMETRIC_PER_INCH)
End Function

Public Function LoadPictureData(ByVal hWnd As Long, ByRef pData() As Byte, ByVal nLen As Long, ByRef ret_w As Long, ByRef ret_h As Long, ByRef cx As Long, ByRef cy As Long) As IPicture
Dim dcPictureLoad As Long
Dim oPicture As IPicture
Dim hGlobal As Long
Dim pvData As Long
Dim oStream As IUnknown
Dim IID_IPicture As Guid

hGlobal = GlobalAlloc(GMEM_MOVEABLE, nLen)
If (hGlobal) Then
pvData = GlobalLock(hGlobal)
If (pvData) Then
' Copy image bytes to memory buffer, and unlock.
Call CopyMemory(ByVal pvData, pData(LBound(pData)), nLen)
Call GlobalUnlock(hGlobal)

' Create an IStream object in global memory buffer.
If (CreateStreamOnHGlobal(hGlobal, True, oStream) = S_OK) Then
' Translate CLSID string to IPicture interface ID.
If (CLSIDFromString(StrPtr(sIID_IPicture), IID_IPicture) = S_OK) Then
' Create an IPicture from the IStream (the docs say the call does not
' AddRef its last param, but it looks like the reference counts are correct..)
Call OleLoadPicture(ByVal ObjPtr(oStream), 0, False, IID_IPicture, oPicture)

If (Not oPicture Is Nothing) Then
cx = oPicture.Width
cy = oPicture.Height

dcPictureLoad = GetDC(hWnd)
ret_w = MAP_LOGHIM_TO_PIX(cx, GetDeviceCaps(dcPictureLoad, LOGPIXELSX))
ret_h = MAP_LOGHIM_TO_PIX(cy, GetDeviceCaps(dcPictureLoad, LOGPIXELSY))
Call ReleaseDC(hWnd, dcPictureLoad)
End If
End If
End If
End If
' Release global memory object.
Call GlobalFree(hGlobal)
End If

' Return results.
Set LoadPictureData = oPicture
End Function

TEST FORMU

Option Explicit

Private Const TEST_FILE As String = "C:\Documents and Settings\gerdogdu\Desktop\xxx.jpg"
'Private Const TEST_FILE As String = "C:\Documents and Settings\gerdogdu\My Documents\My Pictures\test.bmp"

Private Sub Command1_Click()
Dim nFreeFile As Long
Dim datas() As Byte
Dim nLen As Long
Dim ret_w As Long
Dim ret_h As Long
Dim cx As Long
Dim cy As Long

nFreeFile = VBA.FreeFile()
Open TEST_FILE For Binary Access Read As #nFreeFile
nLen = LOF(nFreeFile)
ReDim datas(nLen - 1)
Get #nFreeFile, , datas
Close #nFreeFile

Set Me.Picture = LoadPictureData(Me.hWnd, datas, nLen, ret_w, ret_h, cx, cy)
End Sub
Sayfa başına dön Aşağa gitmek
http://resadiye-eml.yetkinforum.biz
 
Resim Verisini Resme Dönüştürmek
Önceki başlık Sonraki başlık Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Forum Kuralları
» Resimin tarihi nedir ? Resim sanatının tarihi?
» RÜYADA ''Ç'' İLE BAŞLAYAN KELİMELER GÖRMEK

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Tokat-Reşadiye Teknik ve Endüstri Meslek Lisesi Bilişim Teknolojileri Alanı 12-D Sınıfı :: Programlama :: Visual Basic Dilinde Hazır Programlar-
Buraya geçin: