dotnet / maui

.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
https://dot.net/maui
MIT License
22.28k stars 1.76k forks source link

[MAUI] Ugly picture with MediaPicker.CapturePhotoAsync on macOS #17481

Closed arnaudaug closed 1 year ago

arnaudaug commented 1 year ago

Description

On macOS with a Catalyst project, "MediaPicker.CapturePhotoAsync" takes photo contains vertical lines.

Before clicking the red button :

Sans titre

After clicking the red button :

Sans titre 2

Steps to Reproduce

Download the project. Run as Debug, My Mac (MacCatalyst). Click on the button "Take a photo". Open the file, the path is displayed in the console.

Same bug with MAUI version 8.0.0-rc.1.9171 and all 7.0.58 to 7.0.92.

Link to public reproduction project repository

https://github.com/arnaudaug/TakePhoto

Version with bug

8.0.0-rc.1.9171

Is this a regression from previous behavior?

No, this is something new

Last version that worked well

Unknown/Other

Affected platforms

macOS

Affected platform versions

iMac Pro on Ventura 13.5.2 (22G91)

Did you find any workaround?

No response

Relevant log output

No response

moljac commented 1 year ago

@arnaudaug

Thanks for the feedback.

Repro (quick runs):

MacCatalyst

dotnet build TakePhoto-main/ -f:net8.0-maccatalyst -t:run

crashes on startup.

Android

dotnet build TakePhoto-main/ -f:net8.0-android -t:run

crashes immediately.

iOS

dotnet build TakePhoto-main/ -f:net8.0-android -t:run

also crashes immediately with tons of:

  2023-09-19 15:08:55.295918+0200 TakePhoto[16027:354232] *** Terminating app due to uncaught exception 'System.TypeLoadException', reason: 'Could not resolve type with token 0100001c from typeref (expected class 'System.Runtime.CompilerServices.NullableAttribute' in assembly 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a') (System.TypeLoadException)
  Failed to print exception: System.TypeLoadException: Could not resolve type with token 0100001a from typeref (expected class 'System.Runtime.CompilerServices.NullableContextAttribute' in assembly 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')

Cannot upload mov and mp4. I will try later.

arnaudaug commented 1 year ago

Thank you for your interest.

I just made a video recording, if that helps.

https://github.com/dotnet/maui/assets/52696691/a8828b21-738c-47d2-aa5d-1762feb9c3f9

moljac commented 1 year ago

I just made a video recording, if that helps.

Thanks. It helps, but app does not launch on my box and I need to see what is going on.

In the meantime:

==============================================================================================================
  Microsoft .NET 

  dotnet --info

.NET SDK:
 Version:   8.0.100-preview.6.23330.14
 Commit:    ba97796b8f

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  13.5
 OS Platform: Darwin
 RID:         osx.13-arm64
 Base Path:   /usr/local/share/dotnet/sdk/8.0.100-preview.6.23330.14/

.NET workloads installed:
 [wasm-tools]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    8.0.0-preview.6.23329.7/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.json
   Install Type:        FileBased
 [maui-windows]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    8.0.0-preview.6.8686/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.maui/WorkloadManifest.json
   Install Type:        FileBased
 [macos]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    13.3.8646-net8-p6/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.macos/WorkloadManifest.json
   Install Type:        FileBased
 [maui-maccatalyst]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    8.0.0-preview.6.8686/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.maui/WorkloadManifest.json
   Install Type:        FileBased
 [maui-ios]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    8.0.0-preview.6.8686/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.maui/WorkloadManifest.json
   Install Type:        FileBased
 [maui-android]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    8.0.0-preview.6.8686/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.maui/WorkloadManifest.json
   Install Type:        FileBased
 [ios]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    16.4.8646-net8-p6/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.ios/WorkloadManifest.json
   Install Type:        FileBased
 [maui-mobile]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    8.0.0-preview.6.8686/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.maui/WorkloadManifest.json
   Install Type:        FileBased
 [maccatalyst]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    16.4.8646-net8-p6/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.maccatalyst/WorkloadManifest.json
   Install Type:        FileBased
 [maui]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    8.0.0-preview.6.8686/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.maui/WorkloadManifest.json
   Install Type:        FileBased
 [tvos]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    16.4.8646-net8-p6/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.tvos/WorkloadManifest.json
   Install Type:        FileBased
 [android]
   Installation Source: SDK 8.0.100-preview.6
   Manifest Version:    34.0.0-preview.6.359/8.0.100-preview.6
   Manifest Path:       /usr/local/share/dotnet/sdk-manifests/8.0.100-preview.6/microsoft.net.sdk.android/WorkloadManifest.json
   Install Type:        FileBased

Host:
  Version:      8.0.0-preview.6.23329.7
  Architecture: arm64
  Commit:       5340be2ccc

.NET SDKs installed:
  6.0.315 [/usr/local/share/dotnet/sdk]
  6.0.412 [/usr/local/share/dotnet/sdk]
  7.0.109 [/usr/local/share/dotnet/sdk]
  7.0.306 [/usr/local/share/dotnet/sdk]
  8.0.100-preview.6.23330.14 [/usr/local/share/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.20 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 8.0.0-preview.6.23329.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.20 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.9 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 8.0.0-preview.6.23329.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  Not set

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

  dotnet --list-runtimes

Microsoft.AspNetCore.App 6.0.20 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.0-preview.6.23329.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.20 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.9 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.0-preview.6.23329.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

  dotnet --list-sdks

6.0.315 [/usr/local/share/dotnet/sdk]
6.0.412 [/usr/local/share/dotnet/sdk]
7.0.109 [/usr/local/share/dotnet/sdk]
7.0.306 [/usr/local/share/dotnet/sdk]
8.0.100-preview.6.23330.14 [/usr/local/share/dotnet/sdk]
--------------------------------------------------------------------------------------------------------------

  dotnet workload list

Installed Workload Id      Manifest Version                               Installation Source  
-----------------------------------------------------------------------------------------------
wasm-tools                 8.0.0-preview.6.23329.7/8.0.100-preview.6      SDK 8.0.100-preview.6
maui-windows               8.0.0-preview.6.8686/8.0.100-preview.6         SDK 8.0.100-preview.6
macos                      13.3.8646-net8-p6/8.0.100-preview.6            SDK 8.0.100-preview.6
maui-maccatalyst           8.0.0-preview.6.8686/8.0.100-preview.6         SDK 8.0.100-preview.6
maui-ios                   8.0.0-preview.6.8686/8.0.100-preview.6         SDK 8.0.100-preview.6
maui-android               8.0.0-preview.6.8686/8.0.100-preview.6         SDK 8.0.100-preview.6
ios                        16.4.8646-net8-p6/8.0.100-preview.6            SDK 8.0.100-preview.6
maui-mobile                8.0.0-preview.6.8686/8.0.100-preview.6         SDK 8.0.100-preview.6
maccatalyst                16.4.8646-net8-p6/8.0.100-preview.6            SDK 8.0.100-preview.6
maui                       8.0.0-preview.6.8686/8.0.100-preview.6         SDK 8.0.100-preview.6
tvos                       16.4.8646-net8-p6/8.0.100-preview.6            SDK 8.0.100-preview.6
android                    34.0.0-preview.6.359/8.0.100-preview.6         SDK 8.0.100-preview.6

Use `dotnet workload search` to find additional workloads to install.
arnaudaug commented 1 year ago

Don't know if it help, mine :

==========================================================
bash-3.2# dotnet --info
SDK .NET :
 Version:   8.0.100-rc.1.23463.5
 Commit:    e7f4de8816

Environnement d'exécution :
 OS Name:     Mac OS X
 OS Version:  13.5
 OS Platform: Darwin
 RID:         osx-x64
 Base Path:   /usr/local/share/dotnet/sdk/8.0.100-rc.1.23463.5/

.NET workloads installed:
 [maui]
   Source de l’installation: SDK 8.0.100-rc.1
   Version de manifeste:    8.0.0-rc.1.9171/8.0.100-rc.1
   Chemin d'accès au Manifeste:       /usr/local/share/dotnet/sdk-manifests/8.0.100-rc.1/microsoft.net.sdk.maui/WorkloadManifest.json
   Type d'installation:        FileBased

Host:
  Version:      8.0.0-rc.1.23419.4
  Architecture: x64
  Commit:       92959931a3
  RID:          osx-x64

.NET SDKs installed:
  2.1.4 [/usr/local/share/dotnet/sdk]
  2.1.302 [/usr/local/share/dotnet/sdk]
  2.1.701 [/usr/local/share/dotnet/sdk]
  3.0.100 [/usr/local/share/dotnet/sdk]
  3.0.101 [/usr/local/share/dotnet/sdk]
  3.1.102 [/usr/local/share/dotnet/sdk]
  3.1.302 [/usr/local/share/dotnet/sdk]
  3.1.401 [/usr/local/share/dotnet/sdk]
  3.1.404 [/usr/local/share/dotnet/sdk]
  3.1.408 [/usr/local/share/dotnet/sdk]
  3.1.409 [/usr/local/share/dotnet/sdk]
  3.1.410 [/usr/local/share/dotnet/sdk]
  3.1.414 [/usr/local/share/dotnet/sdk]
  3.1.415 [/usr/local/share/dotnet/sdk]
  3.1.416 [/usr/local/share/dotnet/sdk]
  3.1.418 [/usr/local/share/dotnet/sdk]
  3.1.423 [/usr/local/share/dotnet/sdk]
  3.1.424 [/usr/local/share/dotnet/sdk]
  3.1.425 [/usr/local/share/dotnet/sdk]
  3.1.426 [/usr/local/share/dotnet/sdk]
  5.0.100 [/usr/local/share/dotnet/sdk]
  5.0.101 [/usr/local/share/dotnet/sdk]
  5.0.202 [/usr/local/share/dotnet/sdk]
  5.0.203 [/usr/local/share/dotnet/sdk]
  5.0.301 [/usr/local/share/dotnet/sdk]
  5.0.402 [/usr/local/share/dotnet/sdk]
  5.0.403 [/usr/local/share/dotnet/sdk]
  5.0.404 [/usr/local/share/dotnet/sdk]
  5.0.405 [/usr/local/share/dotnet/sdk]
  5.0.407 [/usr/local/share/dotnet/sdk]
  5.0.408 [/usr/local/share/dotnet/sdk]
  6.0.401 [/usr/local/share/dotnet/sdk]
  6.0.402 [/usr/local/share/dotnet/sdk]
  6.0.403 [/usr/local/share/dotnet/sdk]
  6.0.404 [/usr/local/share/dotnet/sdk]
  6.0.405 [/usr/local/share/dotnet/sdk]
  6.0.406 [/usr/local/share/dotnet/sdk]
  6.0.407 [/usr/local/share/dotnet/sdk]
  6.0.408 [/usr/local/share/dotnet/sdk]
  6.0.410 [/usr/local/share/dotnet/sdk]
  6.0.412 [/usr/local/share/dotnet/sdk]
  6.0.413 [/usr/local/share/dotnet/sdk]
  6.0.414 [/usr/local/share/dotnet/sdk]
  7.0.100 [/usr/local/share/dotnet/sdk]
  7.0.101 [/usr/local/share/dotnet/sdk]
  7.0.102 [/usr/local/share/dotnet/sdk]
  7.0.103 [/usr/local/share/dotnet/sdk]
  7.0.200 [/usr/local/share/dotnet/sdk]
  7.0.201 [/usr/local/share/dotnet/sdk]
  7.0.202 [/usr/local/share/dotnet/sdk]
  7.0.203 [/usr/local/share/dotnet/sdk]
  7.0.302 [/usr/local/share/dotnet/sdk]
  7.0.304 [/usr/local/share/dotnet/sdk]
  7.0.306 [/usr/local/share/dotnet/sdk]
  7.0.307 [/usr/local/share/dotnet/sdk]
  7.0.308 [/usr/local/share/dotnet/sdk]
  8.0.100-rc.1.23463.5 [/usr/local/share/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.7 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.10 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.14 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.15 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.16 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.20 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.21 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.22 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.24 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.29 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.30 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.31 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.32 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.7 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.13 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.14 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.16 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.17 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.10 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.13 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.14 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.15 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.16 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.18 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.20 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.21 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.22 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.4 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.7 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.10 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 8.0.0-rc.1.23421.29 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.13 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.14 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.15 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.20 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.21 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.23 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.6 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.10 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.14 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.15 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.16 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.20 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.21 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.22 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.24 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.29 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.30 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.31 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.32 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.6 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.11 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.12 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.13 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.14 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.16 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.17 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.9 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.10 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.11 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.12 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.13 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.14 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.15 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.16 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.18 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.20 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.21 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.22 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.4 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.9 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.10 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.11 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 8.0.0-rc.1.23419.4 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  Not set

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

==========================================================
bash-3.2# dotnet workload list

Bienvenue dans .NET 8.0 !
---------------------
Version du kit SDK : '8.0.100-rc.1.23463.5'

Télémétrie

> ---------

Les outils .NET collectent des données d'utilisation qui nous aident à améliorer votre expérience utilisateur. Elles sont collectées par Microsoft et partagées par la communauté. Vous pouvez refuser l'adhésion à la télémétrie en affectant la valeur '1' ou 'true' à la variable d'environnement DOTNET_CLI_TELEMETRY_OPTOUT via l'interpréteur de commandes de votre choix.

Pour plus d'informations sur la télémétrie des outils CLI .NET, accédez à https://aka.ms/dotnet-cli-telemetry

----------------
Installed an ASP.NET Core HTTPS development certificate.
To trust the certificate, run 'dotnet dev-certs https --trust'
Learn about HTTPS: https://aka.ms/dotnet-https

----------------
Un certificat de développement HTTPS ASP.NET Core a été installé.
Pour approuver le certificat, exécutez 'dotnet dev-certs https --trust' (Windows et macOS uniquement).
Découvrez HTTPS : https://aka.ms/dotnet-https
----------------
Écrivez votre première application : https://aka.ms/dotnet-hello-world
Découvrez les nouveautés : https://aka.ms/dotnet-whats-new
Consultez la documentation : https://aka.ms/dotnet-docs
Signalez des problèmes et recherchez du code source sur GitHub : https://github.com/dotnet/core
Utilisez 'dotnet --help' pour voir les commandes disponibles, ou accédez à https://aka.ms/dotnet-cli
--------------------------------------------------------------------------------------

ID de la charge de travail installée      Version de manifeste              Source de l’installation
----------------------------------------------------------------------------------------------------
maui                                      8.0.0-rc.1.9171/8.0.100-rc.1      SDK 8.0.100-rc.1        

Utilisez 'dotnet workload search' pour rechercher d’autres charges de travail à installer.
arnaudaug commented 1 year ago

@moljac It's me again. I just did a test with the Rider IDE, by downloading the repository. Although the compilation takes longer, I have the same result.

https://github.com/dotnet/maui/assets/52696691/dff4260d-1bf4-44b2-a39a-264ae7404510

And the file generate by code in path "/Users/arnaud/Library/Caches/7d72fca9-0ca2-4bcc-a24c-447d1aa2ec79.png" :

7d72fca9-0ca2-4bcc-a24c-447d1aa2ec79

Regards

drasticactions commented 1 year ago

The Essentials MediaPicker uses UIImagePickerController for that UI, https://github.com/dotnet/maui/blob/d0192d60c410fa870fb28fb06fce3ea4f7a9017f/src/Essentials/src/MediaPicker/MediaPicker.ios.cs#L16

The UI you're showing is a baseline Mac Catalyst control that MAUI calls. If it's failing to take a photo within it, then chances are this isn't a MAUI issue but a Mac one.

https://github.com/drasticactions/MauiRepros/tree/main/MacTakePhoto

I created a Mac Catalyst app that invokes the UIImagePickerController, it should show the same UI that MAUI is showing above, can you see if your image issue happens there? If so, then I think the issue is with your Mac.

ghost commented 1 year ago

Hi @arnaudaug. We have added the "s/needs-info" label to this issue, which indicates that we have an open question for you before we can take further action. This issue will be closed automatically in 7 days if we do not hear back from you by then - please feel free to re-open it if you come back to this issue after that time.

SailDev commented 1 year ago

In my opinion, MediaPicker lacks too many features, to be useful for taking pictures. I switched to Camera.MAUI instead and quite happy with this decision.

ghost commented 1 year ago

Hi @arnaudaug. We have added the "s/needs-info" label to this issue, which indicates that we have an open question for you before we can take further action. This issue will be closed automatically in 7 days if we do not hear back from you by then - please feel free to re-open it if you come back to this issue after that time.

moljac commented 1 year ago

disregard my 1st comment with attempts to repro sample. Seems like my workloads were messed up and I did not have RC.1 installed.

https://github.com/dotnet/maui/issues/17481#issuecomment-1725439457

arnaudaug commented 1 year ago

The Essentials MediaPicker uses UIImagePickerController for that UI,

https://github.com/dotnet/maui/blob/d0192d60c410fa870fb28fb06fce3ea4f7a9017f/src/Essentials/src/MediaPicker/MediaPicker.ios.cs#L16

The UI you're showing is a baseline Mac Catalyst control that MAUI calls. If it's failing to take a photo within it, then chances are this isn't a MAUI issue but a Mac one.

https://github.com/drasticactions/MauiRepros/tree/main/MacTakePhoto

I created a Mac Catalyst app that invokes the UIImagePickerController, it should show the same UI that MAUI is showing above, can you see if your image issue happens there? If so, then I think the issue is with your Mac.

Hi @drasticactions,

With your project, taking photos works perfectly. At least the computer is probably not to blame.

Regards

drasticactions commented 1 year ago

Hi @drasticactions,

With your project, taking photos works perfectly. At least the computer is probably not to blame.

Regards

That's interesting. My code is the same code from Essentials. It's the same UIImagePickerController with the same parameters set. The broken image you showed in your first example is from the UIImagePickerControl preview. That's not in MAUI, that's the macOS control. So it's really weird that the same code works in my app, and not yours.

(FWIW I ran your example MAUI app and it works fine on my Mac, I'm on Sonoma 14.0)

@rolfbjarne Do you have any ideas what could be happening here or what else to test? I'm out of ideas.

rolfbjarne commented 1 year ago

I have two thoughts/ideas:

  1. Is the image still corrupted if you save it to disk?
  2. Can add the MacCatalyst code from the Mac Catalyst project in https://github.com/dotnet/maui/issues/17481#issuecomment-1726957314 into the MAUI project, so that you have two buttons: one using the Mac Catalyst code, and one using the MediaPicker, and see if they still behave differently?

BTW I tried the MAUI sample project, and the image is fine for me.

moljac commented 1 year ago

After reinstalling workloads

Running original sample:

dotnet build TakePhoto-main/ -f:net8.0-maccatalyst -t:run

Screen recording with reduced resolution:

https://github.com/dotnet/maui/assets/1768576/58c2c15e-65c4-482a-8b90-38d794d542f8

Meaning original sample works as expected AKA I cannot repro.

Now comes interesting part:

running @drasticactions sample:

dotnet build MacTakePhoto/ -f:net8.0-maccatalyst -t:run

There are few warnings:

somewhere/17481/MacTakePhoto/AppDelegate.cs(51,42): warning CS8622: Nullability of reference types in type of parameter 'sender' of 'void ViewController.PhotoButton_TouchUpInside(object sender, EventArgs e)' doesn't match the target delegate 'EventHandler' (possibly because of nullability attributes). [somewhere/17481/MacTakePhoto/MacTakePhoto.csproj]
somewhere/17481/MacTakePhoto/AppDelegate.cs(54,13): warning CS8602: Dereference of a possibly null reference. [somewhere/17481/MacTakePhoto/MacTakePhoto.csproj]
somewhere/17481/MacTakePhoto/AppDelegate.cs(70,53): warning CS8622: Nullability of reference types in type of parameter 'sender' of 'void ViewController.ImagePicker_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e)' doesn't match the target delegate 'EventHandler<UIImagePickerMediaPickedEventArgs>' (possibly because of nullability attributes). [somewhere/17481/MacTakePhoto/MacTakePhoto.csproj]
somewhere/17481/MacTakePhoto/AppDelegate.cs(71,41): warning CS8622: Nullability of reference types in type of parameter 'sender' of 'void ViewController.ImagePicker_Canceled(object sender, EventArgs e)' doesn't match the target delegate 'EventHandler' (possibly because of nullability attributes). [somewhere/17481/MacTakePhoto/MacTakePhoto.csproj]
somewhere/17481/MacTakePhoto/AppDelegate.cs(29,29): warning CS8618: Non-nullable field 'imageView' must contain a non-null value when exiting constructor. Consider declaring the field as nullable. [somewhere/17481/MacTakePhoto/MacTakePhoto.csproj]
somewhere/17481/MacTakePhoto/AppDelegate.cs(30,26): warning CS8618: Non-nullable field 'photoButton' must contain a non-null value when exiting constructor. Consider declaring the field as nullable. [somewhere/17481/MacTakePhoto/MacTakePhoto.csproj]
somewhere/17481/MacTakePhoto/AppDelegate.cs(31,41): warning CS8618: Non-nullable field 'imagePicker' must contain a non-null value when exiting constructor. Consider declaring the field as nullable. [somewhere/17481/MacTakePhoto/MacTakePhoto.csproj]

but the app crashes.

https://github.com/dotnet/maui/assets/1768576/ce9d4e26-908c-4dc6-b9dc-9777f0da9b7f

Samples

17481.zip

moljac commented 1 year ago

I am on Ventura 13.5.2, but not intuned yet, so not all VSCode extensions work. I will debug on my other Mac.

And sorry for delays. Uploading videos was some challenge.

drasticactions commented 1 year ago

@moljac For my app, it's my bug. It's a permissions issue if you run from CLI, I didn't set up the info.plist and requests for access. If you run it from the IDE, it should work.

moljac commented 1 year ago

OK. IMO it is not bug. I just fired app and hoped for the best. I will retry from IDE.

arnaudaug commented 1 year ago

I have two thoughts/ideas:

  1. Is the image still corrupted if you save it to disk?
  2. Can add the MacCatalyst code from the Mac Catalyst project in [MAUI] Ugly picture with MediaPicker.CapturePhotoAsync on macOS #17481 (comment) into the MAUI project, so that you have two buttons: one using the Mac Catalyst code, and one using the MediaPicker, and see if they still behave differently?

BTW I tried the MAUI sample project, and the image is fine for me.

Hi @rolfbjarne

Yes the saved file also contains these vertical lines.

Regards

arnaudaug commented 1 year ago

Hi @moljac & @drasticactions

THANKS So it works on your Macs, I must have a specific problem. However, I don't see it on my Teams/Facetime or Xcode applications and I don't know where to look.

Regards

arnaudaug commented 1 year ago

Hello @moljac @jfversluis @drasticactions @rolfbjarne ,

I updated the versions : MAUI : 8.0.0-rc.2.9511 Xcode 15.0.1 iOS 16.7.2 (I don't want to update to iOS 17 yet) macOS Ventura 13.6.1 (I don't want to update to Sonoma yet)

I tested this morning and and this problem is SOLVED. Great :)

Thank you so much

jfversluis commented 1 year ago

Glad to hear it, thanks for letting us know @arnaudaug !