### Godot version

5ee983188de97ae027f9b9c1443438063f708a7e

### System information

Windows 11

### Issue description

Godot editor will throw an error and fail to generate preview icons for terrain tiles which use a base image which is not RGBA8 format.
`core\io\image.cpp:2788 - Condition "format != p_src->format" is true.`

### Steps to reproduce

- Import a non-RGBA8 image into Godot.
- Create a TileMap
- Create an associated TileSet
- Create a terrain for this tileset
- Add the image as an atlas
- Go to the paint tab
- Paint the terrain on the TileSet
- An error will occur any time terrains are edited in the TileSet editor or selected in the TileMap editor terrain tab.

### Minimal reproduction project

[tileset_terrain_bug.zip](https://github.com/godotengine/godot/files/13264213/tileset_terrain_bug.zip)

padded_texture_needs_update = true;
	call_deferred(SNAME("_update_padded_texture"));
}
Ref<ImageTexture> TileSetAtlasSource::_create_padded_image_texture(const Ref<Texture2D> &p_source) {
	ERR_FAIL_COND_V(p_source.is_null(), Ref<ImageTexture>());
	Ref<Image> src_image = p_source->get_image();
	if (src_image.is_null()) {
		Ref<ImageTexture> ret;
		ret.instantiate();
		return ret;
	}
	Size2 size = get_atlas_grid_size() * (texture_region_size + Vector2i(2, 2));
	Ref<Image> image = Image::create_empty(size.x, size.y, false, src_image->get_format());
	for (KeyValue<Vector2i, TileAlternativesData> kv : tiles) {
		for (int frame = 0; frame < (int)kv.value.animation_frames_durations.size(); frame++) {
			
			Rect2i src_rect = get_tile_texture_region(kv.key, frame);
			Rect2i top_src_rect = Rect2i(src_rect.position, Vector2i(src_rect.size.x, 1));
			Rect2i bottom_src_rect = Rect2i(src_rect.position + Vector2i(0, src_rect.size.y - 1), Vector2i(src_rect.size.x, 1));
			Rect2i left_src_rect = Rect2i(src_rect.position, Vector2i(1, src_rect.size.y));
			Rect2i right_src_rect = Rect2i(src_rect.position + Vector2i(src_rect.size.x - 1, 0), Vector2i(1, src_rect.size.y));
			
			Vector2i frame_coords = kv.key + (kv.value.size_in_atlas + kv.value.animation_separation) * ((kv.value.animation_columns > 0) ? Vector2i(frame % kv.value.animation_columns, frame / kv.value.animation_columns) : Vector2i(frame, 0));
			Vector2i base_pos = frame_coords * (texture_region_size + Vector2i(2, 2)) + Vector2i(1, 1);
			image->blit_rect(*src_image, src_rect, base_pos);
			
			image->blit_rect(*src_image, top_src_rect, base_pos + Vector2i(0, -1));
			image->blit_rect(*src_image, bottom_src_rect, base_pos + Vector2i(0, src_rect.size.y));