2012-09-11 23 views
5

Trong MonoTouch:MonoTouch: Bắt một hình ảnh ra khỏi ALAssetsLibrary.AssetForUrl

Tôi đặt trong một hình ảnh từ máy ảnh vào PhotoAlbum:

ALAssetsLibrary library = new ALAssetsLibrary(); 
library.WriteImageToSavedPhotosAlbum(photo.CGImage, meta, (assetUrl, error) => { 
    library.AssetForUrl(assetUrl, GotAsset, FailedGotAsset); 
}); 

Các Photo là tất cả ở đó, hoạt động tốt.

Trên đại biểu GotAsset Tôi đang cố gắng để có được hình ảnh, nhưng chỉ có hình thu nhỏ ở đó. Hình ảnh ở đâu?

void GotAsset(ALAsset asset) 
    { 
     //asset has only thumbnail info??? 
    } 

Dưới đây là những gì các tài sản hình như:

enter image description here

Trả lời

4

Bạn không nhìn thấy, lúc chạy, mỗi thuộc tính trên các thiết bị bởi vì, theo mặc định, (quản lý) mối liên kết được kích hoạt (Liên kết SDK). Điều này sẽ loại bỏ bất kỳ mã nào, bao gồm các thuộc tính, ứng dụng của bạn không sử dụng (và tiết kiệm tấn KB và thời gian triển khai).

Bạn có thể thử gỡ lỗi cài đặt này trên trình mô phỏng (mặc định là Không liên kết) bằng cách thêm nội dung của riêng bạn (trong trình mô phỏng). Một cách khác là tạm thời vô hiệu hóa trình liên kết trên thiết bị của bạn.

Trong cả hai trường hợp, ALAsset của bạn phải hiển thị tất cả các thuộc tính được ghi lại.

+0

bất kỳ ý tưởng về làm thế nào để sẵn sàng tập tin hình ảnh như trong File.ReadAllBytes()? Tôi không thể sử dụng url thư viện nội dung này cho điều đó. Trong trường hợp cụ thể này, tôi muốn tải tệp lên máy chủ để tôi cần truy cập đường dẫn tệp thực. – nhenrique

1

Dựa trên @ giúp đỡ Poupou ở đây là đoạn code tôi thêm vào để làm cho nó hoạt động:

void GotAsset(ALAsset asset) 
    { 
     ALAssetRepresentation rep = asset.DefaultRepresentation; 
     var iref = rep.GetImage(); 
     if(iref!=null) 
      DoStuffWithUIImage(UIImage.FromImage(iref)); 
    }