Image crashes with pictures from bytearray which is created with DrawingView or isn't refreshed with byte[0] - Only on Android
See original GitHub issueOnly on Android.
It seems that the Image control takes the picture and resolves the dimensions in a way that isn’t right. A very small picture ends in a big dimension and increases the memory up to millions of bytes and so the app is crashing.
XXML:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp2.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Image
SemanticProperties.Description="Cute dot net bot waving hi to you!"
HeightRequest="200"
HorizontalOptions="Center"
x:Name="imageContent"
/>
<Label
Text="Hello, World!"
SemanticProperties.HeadingLevel="Level1"
FontSize="32"
HorizontalOptions="Center" />
<Label
Text="Welcome to .NET Multi-platform App UI"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to dot net Multi platform App U I"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="CounterBtn"
Text="Click me"
SemanticProperties.Hint="Counts the number of times you click"
Clicked="OnCounterClicked"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
Code Behind:
public partial class MainPage : ContentPage
{
int count = 0;
string byte64Image = "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";
public MainPage()
{
InitializeComponent();
}
// Crashing
private void OnCounterClicked(object sender, EventArgs e)
{
count++;
if (count == 1)
{
CounterBtn.Text = $"Clicked {count} time";
}
else
CounterBtn.Text = $"Clicked {count} times";
SemanticScreenReader.Announce(CounterBtn.Text);
if (count % 2 == 0)
{
imageContent.Source = "dotnet_bot.png";
}
else if(count == 9)
imageContent.Source = ImageSource.FromStream(() => new MemoryStream(new byte[0]));
else
{
byte[] image = Convert.FromBase64String(byte64Image);
imageContent.Source = ImageSource.FromStream(() => new MemoryStream(image));
}
}
// works
//private void OnCounterClicked(object sender, EventArgs e)
//{
// count++;
// if (count == 1)
// {
// CounterBtn.Text = $"Clicked {count} time";
// }
// else
// CounterBtn.Text = $"Clicked {count} times";
// SemanticScreenReader.Announce(CounterBtn.Text);
// if (count % 2 == 0)
// {
// byte[] image = Convert.FromBase64String(byte64Image);
// imageContent.Source = ImageSource.FromStream(() => new MemoryStream(image));
// }
// else if (count == 9)
// imageContent.Source = ImageSource.FromStream(() => new MemoryStream(new byte[0]));
// else
// {
// imageContent.Source = "dotnet_bot.png";
// }
//}
}
You can paste these two snippets in a blank new maui app - so you can see the crash. If you take the code with the comment with “works” you can see that a different order will help to run the app without any crash. It seems that the Image control isn’t correct initialized inside and so the crash will follow.
From time to time the image isn’t refreshed if i write byte[0] in it and another image was present already.
Issue Analytics
- State:
- Created 6 months ago
- Comments:5 (1 by maintainers)
Top Results From Across the Web
Why my app crashed when upload a bytearray image?
So I want to upload the image shown in imageView to Firebase Storage, but Firebase Storage only accepts bytearray and uri files when...
Read more >ByteBuffer
Byte buffers can be created either by allocation , which allocates space for the buffer's content, or by wrapping an existing byte array...
Read more >Crashes on open - Android
Sketchbook is crashing when I open it If Sketchbook on your Android device crashes as soon as you open it, there are a...
Read more >Avoiding Out of Memory Crashes on Mobile
When it is first created, it will start by preallocating memory for a small byte array where it will store all the downloaded...
Read more >byte[] image data in onPreviewFrame is currently useless ...
I was trying to acquire camera preview images through onPreviewFrame(byte[] data, Camera c) and, within this callback function,
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Verified this issue with Visual Studio Enterprise 17.7.0 Preview 2.0. Can repro on android platform with above code.
Cannot reproduce the crash in the main branch. Need to review with more details.