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!! |