Hi, Im working on a library to decode medical image files, and some of these files are encoded as 'PALETTE COLOR', which means you have a lookup table for red, green and blue pixel values. The final RGB pixel array is constructed by hitting the lookup table with the original pixel values. In my implementation I am using an iterator, and it is kinda slow. I cant spot an obvious way to improve on it though, so I thought I'd put the question out here and see if any of you more experienced Rubyists can suggest a more efficient way of doing this. Thanks, Chris Example code: # Set up example arrays to test the algorithm: lookup_values = Array.new lookup_values << Array.new(256, 0) lookup_values << Array.new(256, 1) lookup_values << Array.new(256, 2) pixels = Array.new(258000, rand(256)) rgb = Array.new(pixels.length*3) # The PALETTE transformation algorithm: pixels.each_index do |i| rgb[i*3] = lookup_values[0][pixels[i]] rgb[(i*3)+1] = lookup_values[1][pixels[i]] rgb[(i*3)+2] = lookup_values[2][pixels[i]] end -- Posted via http://www.ruby-forum.com/.