;***************************** ; ; Colorize ; ;----------------------------- ; Autor: Holzchopf ; Erstellt: 07.11.2005 ; Bearbeitet: 28.05.2009 ;============================= ; ; Ändert bestimmte Farbtöne eines Bildes. ; ;----------------------------- ; Benötigt: ; HSB Include.bb ; ;***************************** ;======================== ; Colorize ; Parameter: ; Eingangsbild ; Ausgabebild ; Neue Farbe, rot 0 -255 ; grün 0 -255 ; blau 0 -255 ; Zu ändernder Farbton 0 -359 ; Farbtonbereich \ -toleranz Function Colorize( Col_img, Col_imgOut, Col_r, Col_g, Col_b, Col_hueS, Col_Tol ) Local Col_img_B = ImageBuffer( Col_img ) Local Col_imgOut_B = ImageBuffer( Col_imgOut ) LockBuffer Col_img_B LockBuffer Col_imgOut_B Local Col_w = ImageWidth( Col_img ) -1 Local Col_h = ImageHeight( Col_img ) -1 HSB_ConvertToHSB Col_r, Col_g, Col_b Local Col_hueIn = HSB_Hue Local Col_satIn = HSB_Saturation Local Col_briIn = HSB_Brightness Local Col_x, Col_y For Col_y = 0 To Col_h For Col_x = 0 To Col_w Local Col_rgb = ReadPixelFast( Col_x, Col_y, Col_img_B ) Local Col_rot = ( Col_rgb And $FF0000 ) Shr 16 Local Col_gruen = ( Col_rgb And $FF00 ) Shr 8 Local Col_blau = ( Col_rgb And $FF ) HSB_ConvertToHSB Col_rot, Col_gruen, Col_blau Local Col_Diff = Abs( HSB_Hue - Col_hueS ) If Col_Diff > 180 Then Col_Diff = 360 -Col_Diff If Col_Diff <= Col_Tol And HSB_Saturation > 0 Then Local Col_f# = Float( Col_Diff ) /Float( Col_Tol ) Local Col_nf# = 1 -Col_f Local Col_sat = Col_satIn /100.0 *HSB_Saturation Local Col_bri = Col_briIn /100.0 *HSB_Brightness If Col_bri > 100 Then Col_bri = 100 If Col_sat > 100 Then Col_sat = 100 HSB_ConvertToRGB Col_hueIn, Col_sat, Col_bri Col_rgb = ( HSB_Red * Col_nf + Col_rot * Col_f ) Shl 16 Or ( HSB_Green * Col_nf + Col_gruen * Col_f ) Shl 8 Or ( HSB_Blue * Col_nf + Col_blau * Col_f ) WritePixelFast Col_x, Col_y, Col_rgb, Col_imgOut_B EndIf Next Next UnlockBuffer Col_img_B UnlockBuffer Col_imgOut_B End Function ;~IDEal Editor Parameters: ;~C#Blitz3D