Giải quyết:Câu trả lời là cập nhật tất cả các gói gói và nhắm mục tiêu phiên bản Android mới hơn. Bây giờ hình ảnh tải như mong đợi. Tôi không hài lòng với điều này vì tôi đã sử dụng chính xác mã mà Xamarin cung cấp và nhắm mục tiêu các phiên bản mới hơn đã không còn sử dụng một số mục mà mã dựa vào. Phiên bản đầu tiên là Xamarin.Forms v23 và tôi đã cập nhật thành V25Hiển thị hình ảnh có Biểu mẫu Xamarin
Tôi có một dự án biểu mẫu Xamarin hoàn toàn mới với một cái nhìn đơn giản mà tôi đang cố gắng hiển thị hình ảnh. Tôi đã thử một số cách để có được một hình ảnh để hiển thị và tôi không có bất kỳ may mắn nào cả.
Tôi đang sử dụng <image>
và tôi cũng đã thử kiểm soát FFImageLoader.
<StackLayout Orientation="Vertical">
<ff:CachedImage Source="https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg" WidthRequest="100" HeightRequest="100" />
<Button x:Name="btn" Text="Image" Clicked="Button_Clicked" />
<Frame OutlineColor="Red">
<Image x:Name="StupidImage" Source="{Binding Thumbnail}" Aspect="Fill" HeightRequest="100" WidthRequest="100" />
</Frame>
</StackLayout>
Đây là chế độ xem hiện tại. Tôi cũng đã đặt Nguồn trực tiếp thành giá trị không có kết quả.
Tôi có thể tải luồng cho hình ảnh. Tôi có thể đọc tất cả các byte từ luồng. Tôi đã xây dựng trình hiển thị lỗi để hiển thị các byte dưới dạng hình ảnh. Lấy hình ảnh từ một nguồn không phải là một vấn đề. Bắt (các) điều khiển hình ảnh để hiển thị hình ảnh là một vấn đề.
Tôi đã thử ràng buộc với mô hình chế độ xem. Khi điều đó thất bại, tôi đã cố gắng trực tiếp thiết lập các nguồn
StupidImage.Source = ImageSource.FromStream(() => result.Stream);
Tôi cũng làm một bản sao của các byte và cố gắng
StupidImage.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes));
Tôi đã thử ImageSource.FromFile()
và .FromUri
. Tôi đã thử thêm hình ảnh vào dự án làm tài nguyên. Mỗi lần thử là như nhau, tài nguyên đã được đọc và các byte đã có sẵn, nhưng điều khiển hình ảnh không hiển thị nó.
Tôi nghĩ có lẽ đó là vấn đề về kích thước, vì vậy tôi đặt kích thước của điều khiển. Không có gì. Tôi nghĩ có lẽ đó là một vấn đề về độ phân giải, vì vậy tôi đã sử dụng một hình ảnh nhỏ hơn. Tôi đã thử một số hình ảnh khác nhau về chất lượng khác nhau.
Sau đó, tôi đã từ bỏ điều khiển hình ảnh và tôi đã nhận gói gói FFImageLoading và cung cấp cho nó một url trực tiếp tới một hình ảnh. Ví dụ tương tự mà các ví dụ FFImageLoading được sử dụng. Vẫn không có hình ảnh.
Tôi đã thử trình mô phỏng và tôi đã thử 2 thiết bị vật lý khác nhau. Cùng một kết quả.
Tôi cũng đã thử đặt hình ảnh trên nút bằng cách sử dụng btn.Image = "whatever.jpg"
với cùng một kết quả.
Đây là kết quả mỗi lần. Tôi bị lạc. Làm cách nào để hiển thị hình ảnh?
EDIT: tôi đã làm được điều này để làm việc, nhưng chỉ trên các giả lập
<Image x:Name="StupidImage" Source="https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg" />
và tương tự cho
StupidImage.Source = ImageSource.FromUri(new Uri("https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg"));
EDIT 2 - Làm rõ
Mục tiêu của tôi là cho phép người dùng chọn ảnh từ thiết bị và sau đó hiển thị trước ew của nó.
Đặt hình ảnh của bạn ở chế độ xem nội dung và thử hình ảnh đến hoặc không –
Bạn đã thử trên một nền tảng khác ngoại trừ Android? Đây là tài liệu chính thức: https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/#Downloading_Images Hãy thử vô hiệu hóa bộ nhớ đệm ... – EvZ
@EvZ Tôi đang cố tải một tệp từ thiết bị , không phải là url. Tôi đã thử các ví dụ uri trong liên kết của bạn cung cấp và tôi đã làm cho nó hoạt động (trên trình giả lập ít nhất), nhưng vẫn không thể làm cho nó làm việc với một dòng hoặc tập tin –