GrabImageScreen -function
Monkey Forums/Monkey Code/GrabImageScreen -function
| ||
| Hi all! I'm not sure if this is here yet, but... I made a function that allows you to grab an image directly from the screen + a pixel masking function that I've found somewhere from the internets. GrabScreen & GrabScreenMasked Parameters: - x,y is the position you want to grab from screen - w,h is the size of your grabbed area and image size - mR, mG, mG is for the color to be masked EDIT: Removed pixel placing offsets since I noticed they wont work. ' Grab image from screen "buffer"
Function GrabScreen:Image(x:Int, y:Int, w:Int, h:Int)
Local rtnImg:= CreateImage(w, h), pixels:= New Int[w * h]
ReadPixels(pixels, x, y, w, h)
rtnImg.WritePixels(pixels, 0, 0, w, h)
Return rtnImg
End
' Grab image from screen "buffer" masked
Function GrabScreenMasked:Image(x:Int, y:Int, w:Int, h:Int, mR:Int = 0, mG:Int = 0, mB:Int = 0)
Local rtnImg:= CreateImage(w, h), pixels:= New Int[w * h]
ReadPixels(pixels, x, y, w, h)
MaskPixels(pixels, mR, mG, mB)
rtnImg.WritePixels(pixels, 0, 0, w, h)
Return rtnImg
EndMaskPixels (I really can't remember where I found this... Sorry) '// Converts Mask Pixel Color to Transparent Pixel
Function MaskPixels:Void(pixels:Int[], mask_r:Int = 0, mask_g:Int = 0, mask_b:Int = 0)
For Local i : Int = 0 Until pixels.Length
Local argb:Int = pixels[i]
Local a : Int = ( argb Shr 24 ) & $ff
Local r : Int = ( argb Shr 16 ) & $ff
Local g : Int = ( argb Shr 8 ) & $ff
Local b : Int = argb & $ff
If r = mask_r And g = mask_g And b = mask_b
a = 0
argb = (a Shl 24) | (r Shl 16) | (g Shl 8) | b
pixels[i] = argb
Endif
Next
End FunctionnSincerely, misthema |
| ||
| Doublepost... This forum keeps f***ing with me!! |