c#/Xamarin摄像头插件
我正在学习C#,我正在尝试开发一个移动应用程序,用户可以在其中买卖东西。 用户可以添加广告,部分原因是他可以直接拍摄照片或从自己的图库中拍摄 我有一个完美的媒体插件,但我失败的是能够在添加页面上临时存储和显示图片。我的目标是,一旦用户将捕获一张显示为MainImage的图片,一旦他按下按钮,再次拍照,前一张图片将移动到MainImage2位置,依此类推。。主图像是最大的显示,因此一旦他捕捉到新图片,他将有机会决定是要做广告,还是要拍一张不同的图片 总的来说,他应该能够拍5张照片,并将它们展示在他的广告上 这是我的快速xaml:c#/Xamarin摄像头插件,c#,xamarin,mobile,C#,Xamarin,Mobile,我正在学习C#,我正在尝试开发一个移动应用程序,用户可以在其中买卖东西。 用户可以添加广告,部分原因是他可以直接拍摄照片或从自己的图库中拍摄 我有一个完美的媒体插件,但我失败的是能够在添加页面上临时存储和显示图片。我的目标是,一旦用户将捕获一张显示为MainImage的图片,一旦他按下按钮,再次拍照,前一张图片将移动到MainImage2位置,依此类推。。主图像是最大的显示,因此一旦他捕捉到新图片,他将有机会决定是要做广告,还是要拍一张不同的图片 总的来说,他应该能够拍5张照片,并将它们展示在他
<?xml version="1.0" encoding="utf-8" ?>
<CarouselPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:controls="clr-namespace:Baltazar.Controls"
xmlns:templates="clr-namespace:Baltazar.Views.Templates"
xmlns:resources="clr-namespace:Baltazar.Resources"
xmlns:helpers="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin"
xmlns:local="clr-namespace:Baltazar.Views"
x:Class="Baltazar.Views.AddingPage">
<ContentPage BackgroundColor="{ StaticResource BackgroundColor }">
<ContentPage.Content>
<StackLayout Spacing="-1">
<Grid Grid.Row="0" VerticalOptions="Start" RowSpacing="0">
<!--ToolBar-->
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<templates:HeaderItem Grid.Row="0"></templates:HeaderItem>
<AbsoluteLayout Grid.Row="0">
<!--Notifications-->
<Image Source ="{DynamicResource Notificatons}"
AbsoluteLayout.LayoutBounds="0.95,0.40,30,30"
AbsoluteLayout.LayoutFlags="XProportional,YProportional"
BackgroundColor= "Transparent">
</Image>
</AbsoluteLayout>
</Grid>
<Grid Grid.Row="1" RowSpacing="5" Padding="20,0,20,10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="200"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ProgressBar Grid.Row="0" IsVisible="True" BackgroundColor="Black" VerticalOptions="Start" HorizontalOptions="Center"/>
<Frame Padding="20,15,20,5" Grid.Row="1" HasShadow="True" HeightRequest="140" WidthRequest="100">
<Image x:Name="MainImage" Grid.Row="1"/>
</Frame>
<Grid Grid.Row="2" Padding="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Frame HeightRequest="40" WidthRequest="43" Grid.Column="0">
<Image x:Name="MainImage1" Grid.Column="0"/>
</Frame>
<Frame HeightRequest="40" WidthRequest="43" Grid.Column="1">
<Image x:Name="retSource" Grid.Column="1"/>
</Frame>
<Frame HeightRequest="40" WidthRequest="43" Grid.Column="2">
<Image x:Name="MainImage3" Grid.Column="2"/>
</Frame>
<Frame HeightRequest="40" WidthRequest="43" Grid.Column="3">
<Image x:Name="MainImage4" Grid.Column="3"/>
</Frame>
<Frame HeightRequest="40" WidthRequest="43" Grid.Column="4">
<Image x:Name="MainImage5" Grid.Column="4"/>
</Frame>
</Grid>
<Grid Grid.Row="3" Padding="20,20,20,10">
<Grid.RowDefinitions>
<RowDefinition Height ="Auto"/>
<RowDefinition Height ="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Style ="{StaticResource SecondaryButton}" Text="{x:Static resources:LabelCZ.ButtonTakePicture}" Clicked="TakePicture_Clicked"/>
<Button Grid.Row="0" Grid.Column="1" Style ="{StaticResource SecondaryButton}" Text="{x:Static resources:LabelCZ.ButtonUploadPhoto}" Clicked="UploadPhoto_Clicked" />
<Button Grid.Row="1" Grid.Column="0" Style ="{StaticResource SecondaryButton}" Text="{x:Static resources:LabelCZ.ButtonTakeVideo}" Clicked="TakeVideo_Clicked" />
<Button Grid.Row="1" Grid.Column="1" Style ="{StaticResource SecondaryButton}" Text="{x:Static resources:LabelCZ.ButtonUploadVideo}" Clicked="UploadVideo_Clicked" />
</Grid>
</Grid>
</StackLayout>
</ContentPage.Content>
</ContentPage>
</CarouselPage>
我的问题是,如果你能为我指出正确的方向,如何做到这一点 首先,您可以拥有一个模型:
public class User
{
public int Id {get; set;}
public string Name{get; set;}
public List<Picture> Pictures{get; set;}
}
public class Picture
{
public string Id {get; set;}
public string Url{get; set;}
public byte[] Image{get; set;}
}
公共类用户
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共列表图片{get;set;}
}
公开课图片
{
公共字符串Id{get;set;}
公共字符串Url{get;set;}
公共字节[]映像{get;set;}
}
现在,您可以拥有一个带有字节[]
的图片列表,通过该列表,您可以临时显示这些图片。拍摄完照片后,将图像添加到图片列表并更新UI(您可以使用MVVM模式自动完成此操作)
对于持久性,您可以将sqlite用于本地存储,将azure用于云存储。有很多库可以轻松地集成这一功能
希望这能有所帮助。您是否有用于存储的web api设置?你们现在有什么设置?嗨,谢谢你们,我想先把它们存储在文件中,一旦我了解了api,我会把它们全部传输到那个里。我设置了sqlite,但据我所知,sqlite不适合图片..您不会存储字节[],而是存储图片的位置,这就是为什么有URL属性。byte[]Image属性仅用于临时数据,以便在拍摄照片或选择照片后实时显示它们。
public class User
{
public int Id {get; set;}
public string Name{get; set;}
public List<Picture> Pictures{get; set;}
}
public class Picture
{
public string Id {get; set;}
public string Url{get; set;}
public byte[] Image{get; set;}
}