# Create an image from matrix

**URL:** <https://discourse.julialang.org/t/create-an-image-from-matrix/83523>\
**Category:** Visualization\
**Created:** [June 29, 2022, 3:19pm UTC](https://discourse.julialang.org/t/create-an-image-from-matrix/83523 "2022-06-29T15:19:48Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![extremety1989](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/extremety1989/32/28184_2.png) [@extremety1989](https://discourse.julialang.org/u/extremety1989)\
**Post date:** [June 29, 2022, 3:19pm UTC](https://discourse.julialang.org/t/create-an-image-from-matrix/83523/1 "2022-06-29T15:19:48Z")

</div>

i am using gans to generate an image, it ouputs an array of size (256,256,3,1) “WHCB” how can build an image out of it ?

here is an example what i tried, i think i need to remove dim ( channels and batch):

function create\_img(data)  
#data → (witdh hight channel batch\_size)  
img\_array = permutedims(vcat(reshape.(chunk(hr,256),256, :)…),(2,3,1))  
return img\_array .\* 255.0f0  
end

---

<div class="post-metadata">

**Author:** ![contradict](https://avatars.discourse-cdn.com/v4/letter/c/ac91a4/32.png) [@contradict](https://discourse.julialang.org/u/contradict)\
**Post date:** [June 29, 2022, 4:12pm UTC](https://discourse.julialang.org/t/create-an-image-from-matrix/83523/2 "2022-06-29T16:12:09Z")

</div>

```julia
using Images

data = rand(256,256,3,1)

create_images(data) = colorview.(RGB, permutedims.(eachslice(data; dims=4), Ref((3,1,2))))

```

`eachslice` iterates over each 256x256x3 array in the batch.  
`permutedims` moves the color channel first to create a 3x256x256 array.  
[`colorview`](https://juliaimages.org/stable/tutorials/conversions_views/#Color-separations:-views-for-converting-between-numbers-and-colors) turns the 256x256x3 array of `Float64` into a 256x256 array of RGB values.

If you have [ImageInTerminal](https://github.com/JuliaImages/ImageInTerminal.jl) installed, you even get a nice preview displayed!

---

<div class="post-metadata">

**Author:** ![extremety1989](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/extremety1989/32/28184_2.png) [@extremety1989](https://discourse.julialang.org/u/extremety1989)\
**Post date:** [June 29, 2022, 4:26pm UTC](https://discourse.julialang.org/t/create-an-image-from-matrix/83523/3 "2022-06-29T16:26:38Z")

</div>

thanks

---

<div class="post-metadata">

**Author:** ![extremety1989](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/extremety1989/32/28184_2.png) [@extremety1989](https://discourse.julialang.org/u/extremety1989)\
**Post date:** [June 29, 2022, 4:31pm UTC](https://discourse.julialang.org/t/create-an-image-from-matrix/83523/4 "2022-06-29T16:31:59Z")

</div>

when should i multiply data by 255 ? because the data is normalized pixels/255

---

<div class="post-metadata">

**Author:** ![contradict](https://avatars.discourse-cdn.com/v4/letter/c/ac91a4/32.png) [@contradict](https://discourse.julialang.org/u/contradict)\
**Post date:** [June 29, 2022, 4:51pm UTC](https://discourse.julialang.org/t/create-an-image-from-matrix/83523/5 "2022-06-29T16:51:44Z")

</div>

The [RGB{Float64}](https://juliagraphics.github.io/Colors.jl/stable/constructionandconversion/#Color-Parsing) color type uses 0.0-1.0 scaled values. This may be helpful:

[https://juliaimages.org/stable/tutorials/arrays\_colors/](https://juliaimages.org/stable/tutorials/arrays_colors/)
