[swift-users] How do I turn an array into a bitmap image?

Jens Alfke jens at mooseyard.com
Wed Mar 15 12:44:46 CDT 2017


> On Mar 15, 2017, at 9:56 AM, Nevin Brackett-Rozinsky via swift-users <swift-users at swift.org> wrote:
> 
> For one of my programs, I need to take an array of Floats and use the underlying bytes as the RGBA data for a bitmap image. In particular, the 32 bits of each Float must be treated as the color of the corresponding pixel. So the result is an image of height 1 and width the length of the array.

Make a pixmap, an array of UInt8 that’s 4x longer than your original array, where the elements are interpreted as R, G, B, A, R, G, B, A… Then fill it in based on the original float values.

> In particular, I need to be able to save the image as a PNG file, then later load it from disk and reconstruct each Float from its pixel, with no loss or change to the value of the Floats. So, how do I go from [Float] to a bitmap image suitable for saving to disk, without altering the underlying bytes?

You’ll need to call some external image-encoding library, passing it your pixmap. If you’re on an Apple platform try ImageIO. If not, or if you want to be cross-platform, try libpng.

—Jens
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170315/dcb30988/attachment.html>


More information about the swift-users mailing list