从相机捕获向图像添加文本
本文关键字:图像 添加 文本 相机 | 更新日期: 2023-09-27 18:31:08
>我正在尝试创建一个地铁应用程序,该应用程序将从平板电脑相机捕获图像。但是,在捕获时,我想在图像上覆盖日期戳。
/// <summary>
/// This is the click handler for the 'CaptureButton' button.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void CapturePhoto_Click(object sender, RoutedEventArgs e)
{
try
{
rootPage.NotifyUser("", NotifyType.StatusMessage);
// Using Windows.Media.Capture.CameraCaptureUI API to capture a photo
CameraCaptureUI dialog = new CameraCaptureUI();
Size aspectRatio = new Size(16, 9);
dialog.PhotoSettings.CroppedAspectRatio = aspectRatio;
StorageFile file = await dialog.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (file != null)
{
BitmapImage bitmapImage = new BitmapImage();
using (IRandomAccessStream fileStream = await file.OpenAsync(FileAccessMode.Read))
{
bitmapImage.SetSource(fileStream);
}
// add code for text overlay here
CapturedPhoto.Source = bitmapImage;
ResetButton.Visibility = Visibility.Visible;
// Store the file path in Application Data
appSettings[photoKey] = file.Path;
}
else
{
rootPage.NotifyUser("No photo captured.", NotifyType.StatusMessage);
}
}
catch (Exception ex)
{
rootPage.NotifyUser(ex.Message, NotifyType.ErrorMessage);
}
}
通常在我会使用的图像上添加文本。
Graphics g = Graphics.FromImage
然而,系统绘图似乎消失了。我还可以使用什么在捕获的图像上叠加文本?
Windows.UI.Xaml 没有直接光栅图形 API。您可以从可写位图或位图解码器获取原始像素,但是没有高级方法可以在框中绘制它们。
有几个选项可以将文本绘制到图像上:
- 互操作到 DirectWrite 并将位图传入进行操作。
- 查找将直接在您的像素上绘制的第三方库缓冲区(我不确定是否有人可以做到这一点:对于一般绘图许多人们使用WriteableBitmapEx,但我不相信它可以在一个 Windows 运行时应用。另请查看WinRTXamlToolkit )
- 使用图像控件和文本块中的位图创建网格然后使用渲染目标位图将网格渲染到位图。
- Win2d 旨在向 Windows 应用商店公开 Direct2d应用程序。这项工作正在进行中,但文本目前正在实施。见 https://github.com/Microsoft/Win2D
我会从 Win2d 开始,看看它是否可以满足您的需求。