Then you can load a base map and a layer map image and put them together.
[HttpPost("/v1/[controller]/[action]")]
[ProducesResponseType(typeof(ImageData), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status404NotFound)]
[ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> ByUrlPoc([Required][FromBody] PrintByUrlInput printByUrl)
{
var basemapResponse = await _httpClient.GetAsync(printByUrl.BasemapUrl);
byte[] basemap = await basemapResponse.Content.ReadAsByteArrayAsync();
var layerResponse = await _httpClient.GetAsync(printByUrl.LayerUrl);
byte[] layer = await layerResponse.Content.ReadAsByteArrayAsync();
var resizeFactor = 1f;
//var basemapImage = SKBitmap.Decode("img\\Bild_voll.png");
var basemapImage = SKBitmap.Decode(basemap);
var toBitmap = new SKBitmap((int)Math.Round(basemapImage.Width * resizeFactor), (int)Math.Round(basemapImage.Height * resizeFactor), basemapImage.ColorType, basemapImage.AlphaType);
var canvas = new SKCanvas(toBitmap);
// Draw a bitmap rescaled
canvas.SetMatrix(SKMatrix.CreateScale(resizeFactor, resizeFactor));
canvas.DrawBitmap(basemapImage, 0, 0);
canvas.ResetMatrix();
//var layerImage = SKBitmap.Decode("img\\Bild_transp2_800.png");
var layerImage = SKBitmap.Decode(layer);
canvas.DrawBitmap(layerImage, 0, 0);
canvas.Flush();
var image = SKImage.FromBitmap(toBitmap);
var data = image.Encode(SKEncodedImageFormat.Jpeg, 90);
var stream = new MemoryStream();
data.SaveTo(stream);
data.Dispose();
image.Dispose();
canvas.Dispose();
toBitmap.Dispose();
basemapImage.Dispose();
return base.File(stream.ToArray(), "image/jpeg");
}
public class PrintByUrlInput
{
public string BasemapUrl { get; set; }
public string LayerUrl { get; set; }
}