-
when I use Image2D to create a new image, the parameter always needs Array Char type, but how to use integer or float as an input, so what's the best practice to create an image with magnum? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
You can allocate the data and then use constexpr Vector2i size{2, 2};
Image2D image{{}, PixelFormat::RGBA32UI, size,
Containers::Array<char>{NoInit, size.product()*sizeof(UnsignedInt)*4}};
auto pixels = image.pixels<Vector4ui>();
const int x = 0;
const int y = 1:
pixels[y][x] = Vector4ui{345, 0, 123, 678}; Note that to access a pixel, you pick the row first, then the column in the row, which is why x and y are in a different order than I used to expect. For some pixel types, you might need to add row padding etc. I think there was a function to compute the required data size for an image dimension and storage parameters 🤔 |
Beta Was this translation helpful? Give feedback.
-
Thank you very much! |
Beta Was this translation helpful? Give feedback.
You can allocate the data and then use
.pixels<T>()
to type cast the char data to some pixel type, e.g.:Note that to access a pixel, you pick the row first, then the column in the row, which is why x and y are in a different order than I used to expect.
For some pixel types, you might need to add row padding etc. I think there was a function to compute the required data size for an image…