【发布时间】:2021-12-13 11:08:32
【问题描述】:
我正在尝试将 InkCanvas 绘制到 8bpp 图像,但是当我尝试这样做时,图像将自身转换为 32bpp,我得到的较低的是 24bpp 但不是 8bpp。任何人都可以帮助我吗?我作为输入提供的图像是使用绘画创建的 8bpp BMP 图像。
Image imgToEdit;
InkCanvas inkCanvas;
file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(Ambiente.imgBlankFirma);
await file.CopyAsync(photoFolder, NomeFile, NameCollisionOption.ReplaceExisting);
file = await photoFolder.GetFileAsync(NomeFile);
imgToEdit = imgFirma;
inkCanvas = inkCanvasFirma;
if (inkCanvas.InkPresenter.StrokeContainer.GetStrokes().Count <= 0)
{
errore = true;
return;
}
var randomAccessStream = await file.OpenReadAsync();
CanvasDevice device = CanvasDevice.GetSharedDevice();
CanvasRenderTarget renderTarget = new CanvasRenderTarget(device, (int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight, 96); //inkCanvas.ActualWidth inkCanvas.ActualHeight
using (var ds = renderTarget.CreateDrawingSession())
{
var image = await CanvasBitmap.LoadAsync(device, randomAccessStream);
// draw your image first
ds.DrawImage(image);
// then draw contents of your ink canvas over it
ds.DrawInk(inkCanvas.InkPresenter.StrokeContainer.GetStrokes());
}
randomAccessStream.Dispose();
// save results
using (var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
await renderTarget.SaveAsync(fileStream, CanvasBitmapFileFormat.Tiff, 1f);
}
【问题讨论】:
-
我会假设渲染始终以 32bpp 完成,因此您可能需要在稍后的步骤中进行颜色转换。见32bpp to 8bpp 和render target to bitmapImage
-
嗨,我已经尝试过这个解决方案,但问题是使用 gif 我可以创建 8bpp 图像,但无法将其上传到需要 8bpp 格式的 BMP 图像的服务器。跨度>