FullStack Dev
FullStack Dev

Reputation: 11

Python - how to convert a 24-bit PNG image to 32-bit using Open-cv or PIL

I want to convert a 24-bit PNG image to 32-bit so that it can be displayed on the LED matrix. Here is the code which I have used, but it converted 24-bit to 48-bit

import cv2
import numpy as np
i = cv2.imread("bbb.png")
img = np.array(i, dtype = np.uint16)
img *= 256
cv2.imwrite('test.png', img)

Upvotes: 0

Views: 11628

Answers (2)

Mark Setchell
Mark Setchell

Reputation: 207445

I looked at the christmas.png image in the code you linked to, and it appears to be a 624x8 pixel image with a palette and an 8-bit alpha channel.

Assuming the sample image works, you can make one with the same characteristics by taking a PNG image and adding a fully opaque alpha channel like this:

#!/usr/local/bin/python3
from PIL import Image

# Load the image and convert to 32-bit RGBA
im = Image.open("image.png").convert('RGBA')

# Save result
im.save("result.png")

I generated a gradient image and applied that processing and got this, so maybe you can try that:

enter image description here

Upvotes: 3

NateTheGrate
NateTheGrate

Reputation: 600

I think you have confused the color bit-depth with the size of the input image/array. From the links posted in the comments, there is no mention of 32 as a bit depth. The script at that tutorial link uses an image with 3-channel, 8-bit color (red, green, and blue code values each represented as numbers from 0-255). The input image must have the same height as the array, but can be a different width to allow scrolling.

For more on bit-depth: https://en.wikipedia.org/wiki/Color_depth

Upvotes: 2

Related Questions