make image background transparent

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By AiTechEye

i have a viewport node where transparent_bg = true

var img = get_node("viewport").get_viewport().get_texture().get_data()
img.save_png("res://temp_png.png")

the viewport texture background are transparent in the editor, but black when its saved.
any idea?

Have you checked the texture data to see whether it has alpha data?

Ertain | 2020-02-24 00:32

Got it, i had to convert the format

AiTechEye | 2020-02-24 07:34

:bust_in_silhouette: Reply From: Error7Studios

VIEWPORT.get_texture().get_data() returns an Image in the format, FORMAT_RGBAH.
You can check this by using IMAGE.get_format()

It will return 15, which is the enum value for IMAGE.FORMAT_RGBAH
When you save it with save_png(), all the transparent pixels are black.

You can simply convert the image to FORMAT_RGBA8, and then when you save it, it will preserve its transparency.

var my_img : Image = my_viewport.get_texture().get_data()
print(my_img.get_format())

my_img.convert(Image.FORMAT_RGBA8)
print(my_img.get_format())

my_img.flip_y()
my_img.save_png(my_path)
:bust_in_silhouette: Reply From: AiTechEye

img.convert(Image.FORMAT_RGBA8)