How to save a screenshot

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

Hi,

I am taking a screenshot of textureRect which is child of a viewport with the below code. I want to save the screenshot in the file system so that when I play the game next time, it starts from the saved screenshot.

func _on_Kemra_pressed():

	ViewPort.set_clear_mode(Viewport.CLEAR_MODE_ONLY_NEXT_FRAME)

	yield(VisualServer, "frame_post_draw")
	var img = get_viewport().get_texture().get_data()
	img.flip_y()
	var tex = ImageTexture.new()
	tex.create_from_image(img)
	textRect.set_texture(tex)
	

I want to save the current texture of the node textRect to file so that when I play the game next time the saved screenshot is loaded.

:bust_in_silhouette: Reply From: Lola

The Image class has a save_png method that you can use for this:

get_viewport().get_texture().get_data().save_png("user://screenshot.png")

Thanks a lot. This works.

ashish | 2021-09-29 09:24