Изображение ссуды Skiasharp из URL-адреса и рисование на холсте в Xamarin Forms - PullRequest
0 голосов
/ 01 августа 2020

Я искал способ загрузить изображение из URL-адреса и нарисовать его на SKCanvas с помощью Skiasharp в Xamarin.

https://forums.xamarin.com/discussion/97717/skiasharp-get-skbitmap-from-url

Я нашел ссылку выше, но почему-то моя программа вылетела из-за этого примера.

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Вы можете использовать библиотеку FFImageLoading, она поддерживает установку Image Source в url из коробки. он использует SkiaSharp для рендеринга изображений. Или, если вы любите приключения, вы всегда можете посмотреть, что реализация в исходном коде, и создать собственную, соответствующую вашим потребностям здесь

0 голосов
/ 01 августа 2020

Осмотрев inte rnet, я наконец заставил код работать. Ниже приведен мой код, в котором есть что-то еще, например, сначала проверьте, существует ли файл в URL-адресе, а также измените размер изображения, чтобы он соответствовал размеру всего холста.

HttpWebResponse response = null;
var request = (HttpWebRequest) WebRequest.Create(url);
request.Method = "HEAD";
request.Timeout = 2000; // miliseconds

try 
{
    response = (HttpWebResponse) request.GetResponse();

    if (response.StatusCode == HttpStatusCode.OK) //Make sure the URL is not empty and the image is there
    {
        // download the bytes
        byte[] stream = null;
        using(var webClient = new WebClient()) 
        {
            stream = webClient.DownloadData(url);
        }

        // decode the bitmap stream
        resourceBitmap = SKBitmap.Decode(stream);

        if (resourceBitmap != null) 
        {
            var resizedBitmap = resourceBitmap.Resize(info, SKFilterQuality.High); //Resize to the canvas
            canvas.DrawBitmap(resizedBitmap, 0, 0);
        }
    }
}
catch(Exception ex) 
{

}
finally 
{
    // Don't forget to close your response.
    if (response != null) 
    {
        response.Close();
    }
}
...