Есть такой код, читается картинка, попиксельно раскадывается на RGB. Затем для каждого пикселя увеличиваем Red, уменьшаем Green, увеличиваем Blue. Складываем цвета заново, формируем битмап в памяти и сохраняем его на диск. Все работает, но медленно, как можно ускорить работу этого кода?
- Код: Выделить всё
#Compile Exe
#Dim All
#Include "win32api.inc"
Function PBMain () As Long
Local hbmp As Dword
Local hbmpwin As Dword
Local x As Dword
Local y As Dword
Local rgbColor As Dword
Local temp As String
Local total_red As Long
Local total_green As Long
Local total_blue As Long
Local New_Pixel As Dword
Local hNewBmp As Dword
Local i As Dword
Local t As Dword
Dim Clr(640,480) As Dword
Graphic Bitmap Load "dragon_black.bmp", 640, 480 To hbmp
Graphic Attach hbmp, 0
Graphic Window "", 0, 0, 640, 480 To hbmpwin
Graphic Attach hbmpwin, 0
Graphic Copy hbmp, 0
For i=1 To 640
For t=1 To 480
Graphic Get Pixel (i, t) To rgbColor
Clr (i,t)= rgbColor
Next t
Next i
Graphic Bitmap New 640, 480 To hNewBmp
Graphic Attach hNewBmp, 0
For i=1 To 640
For t=1 To 480
temp = Right$("000000000000000000000000" + Bin$(Clr (i,t)),24)
total_red = total_red + Val("&B" + Mid$(temp,17,8))
total_green = total_green + Val("&B" + Mid$(temp,9,8))
total_blue = total_blue + Val("&B" + Mid$(temp,1,8))
New_Pixel=RGB(total_red+10, total_green-10, total_blue+10)
Graphic Set Pixel (i, t ), New_Pixel
total_red=0
total_green=0
total_blue=0
Next t
Next i
Kill "new_dragon.bmp"
Graphic Save "new_dragon.bmp"
End Function