Private bmWidth As Long
Private bmHeight As Long
Private bmSize As Long
Private bmBits() As Byte
Private Sub cmdButton_Click()
'Get picture's Width and Height
bmWidth = Picture1.Width
bmHeight = Picture1.Height
'ReDefine Bit array to hold all pixels from picture box
ReDim Bits(0 To 2, 0 To bmWidth - 1, 0 To bmHeight - 1) As Byte
'Store size of bitmap in total pixels
bmSize = 3 * bmWidth * bmHeight
'Grab picture's pixels and load to Bit array
GetBitmapBits Picture1.Image, bmSize, Bits(0, 0, 0)
'Loop thru each Red, Green and Blue portion of each
'pixel and turn it to it's negative color
For Y = 0 To bmHeight - 1
For X = 0 To bmWidth - 1
Bits(2, X, Y) = 255 - Bits(2, X, Y) 'Red Bits
Bits(1, X, Y) = 255 - Bits(1, X, Y) 'Green Bits
Bits(0, X, Y) = 255 - Bits(0, X, Y) 'Blue Bits
Next X
Next Y
'Load Bit array to picture box
SetBitmapBits Picture1.Image, bmSize, Bits(0, 0, 0)
'SetBitmapBits normally triggers a redraw event,
'but just in case it doesn't, we'll do one now
Picture1.Refresh
End Sub
Image1.Picture = LoadPicture("photo.jpg")?
IVAN008 писал(а):Код полюбому не мой, это из примера скопировал, но в этом примере он как раз и не работает.
IVAN008 писал(а):ВОПРОС: Можно ли читать Bitmap непосредственно из файла .jpeg, только без заморочек про кодирование этого саого жпег. Хочется просто - LoadBitmapBit file, array()
w01fie писал(а):Короче - нужна библиотека по обработке ЖПЕГ - чтобы одной готовой функцией тебе файл превратила в матрицу пискселов? Тут без декодирования никак.... Или - можно из память веди считать (тока это не ко мне)...
Private Declare Function GetBitmapBits Lib "gdi32.dll" (ByVal hBitmap As Long, ByVal dwCount As Long, ByRef lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32.dll" (ByVal hBitmap As Long, ByVal dwCount As Long, ByRef lpBits As Any) As Long
tyomitch писал(а):А у автора, в таком случае, наверняка проблема в строчке "bmSize = 3 * bmWidth * bmHeight", которая не учитывает пропуски между строчками картинки.
tyomitch писал(а):А у автора, в таком случае, наверняка проблема в строчке "bmSize = 3 * bmWidth * bmHeight", которая не учитывает пропуски между строчками картинки.
BV писал(а):Я бы просто скачал Win32API.tlb, очень удобно.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 52