Code: Select all
;; bgra -> rgba
(define (swaprb32 data)
(join (map (lambda (x) (select x 2 1 0 3)) (explode data 4)) ""))
;; bgr -> rgb
(define (swaprb24 data)
(join (map reverse (explode data 3)) ""))
;; testing
(print "test-rgba: ")
(set 'testdata (dup "bgra" (* 512 512))) ; data from file
(set 'testres (dup "rgba" (* 512 512))) ; what i want to get
(print (time (set 'res (swaprb32 testdata))) " ")
(println (= res testres))
(print "test-rgb: ")
(set 'testdata (dup "bgr" (* 512 512)))
(set 'testres (dup "rgb" (* 512 512)))
(print (time (set 'res (swaprb24 testdata))) " ")
(println (= res testres))
any suggestions?
results i get for 512x512 image:
test-rgba: 781 true
test-rgb: 609 true