簡體   English   中英

Xamarin Forms - 媒體插件 - 手機上的空縮略圖

[英]Xamarin Forms - Media Plugin - Empty thumbnails on phone

我正在使用James Montemagno的媒體插件來拍照。

出於某種原因,只有在手機上運行應用程序時,拍照時,縮略圖才能在TestFolder中正確顯示,但它們顯示為空文件。

在模擬器中運行時,圖像正確顯示。

這是我的代碼:

 public async Task<MediaFile> TakePhoto() {
            MediaFile result = null;

            await CrossMedia.Current.Initialize();

            if (CrossMedia.Current.IsCameraAvailable && CrossMedia.Current.IsTakePhotoSupported) {
                // Supply media options for saving our photo after it's taken.
                var mediaOptions = new Plugin.Media.Abstractions.StoreCameraMediaOptions {
                    SaveToAlbum = true,
                    Directory = "TestFolder",
                    Name="test.jpg"
                };

                // Take a photo of the business receipt.
                result = await CrossMedia.Current.TakePhotoAsync(mediaOptions);
            }
            return result;
        }

編輯1:

簡而言之,由於某些原因,Media插件無法在我的手機上運行(華為P8 Lite)。 我在GitHub上嘗試了這個示例:(用法)

https://github.com/jamesmontemagno/MediaPlugin 

照片確實顯示在模擬器中但不在手機上(相機打開並拍照)。 如上所述,如果我訪問相冊文件夾,則會出現空縮略圖。

編輯2

這是android清單文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-sdk android:minSdkVersion="15" />
    <application android:label="MediaPluginTests.Droid"></application>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.CAMERA" />
   <uses-feature android:name="android.hardware.camera" />
   <uses-feature android:name="android.hardware.camera.autofocus" />
</manifest>

我還補充說:

   var cameraStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera);
            var storageStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage);

            if (cameraStatus != PermissionStatus.Granted || storageStatus != PermissionStatus.Granted) {
                var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Camera, Permission.Storage });
                cameraStatus = results[Permission.Camera];
                storageStatus = results[Permission.Storage];
            }

兩個權限都返回為已授予。

編輯3

我試過三星Galaxy A3並且工作得很好,在相機膠卷和應用程序中正確顯示。

但這就是我的華為P8手機相機相冊中圖像的顯示方式:

在此輸入圖像描述

編輯4

我嘗試過不同的華為P8設備,遇到了同樣的問題。

要解決我設置的問題:

PhotoSize = PhotoSize.Small

在StoreCameraMediaOptions上:

var mediaOptions = new Plugin.Media.Abstractions.StoreCameraMediaOptions {
                    SaveToAlbum = true,
                    Directory = "MyDirectory",
                    PhotoSize = PhotoSize.Small
                };

但是不是綁定到AlbumPath而是綁定到Path:

ViewModel的屬性(使用PRISM for Xamarin Forms):

public MediaFile Photo {
            get {
                return photo;
            }
            set {
                SetProperty<MediaFile>(ref photo, value);
            }
    }


<Image Grid.Row="0" Grid.ColumnSpan="2" Source="{Binding Photo.Path}"></Image>

我意識到,如果我在照片拍攝后添加延遲:

await Task.Delay(5000)

圖像將開始出現在相機膠卷文件夾中,但即使這樣,圖像也不會顯示在屏幕上。

在Visual Studio中查看輸出屏幕后,我注意到以下消息:

03-14 10:52:51.808 W/OpenGLRenderer(18106): Bitmap too large to be uploaded into a texture (3120x4160, max=4096x4096)

然后我意識到問題與圖像大小有關,但即使在StoreCameraMediaOptions上將圖像大小設置為小,也沒有區別。

調整大小似乎僅適用於內部應用程序存儲器映像,而不適用於存儲在相機卷文件夾中的映像。

調整圖像大小后,照片會在應用程序中正確顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM