WPF:将 BitmapImage 转换为数组并对其进行编辑,然后重新创建它
WPF: Converting a BitmapImage to an array and edit it, then recreating it
我想在 WPF 中开发一个隐写术软件,所以我需要直接访问像素,我正在尝试将位图转换为数组并进行编辑,问题是我只能通过 BitmapSource 重新创建它(我是不是对吧?)而且我无法正确地重新创建它。我得到的是黑白图像。
public static void Conceal(BitmapImage CoverPhotoBitmap, BitmapImage HiddenPhotoBitmap, ref BitmapSource ResultPhotoBitmapSource)
{
int stride = CoverPhotoBitmap.PixelWidth * 4;
int size = CoverPhotoBitmap.PixelHeight * stride;
byte[] CoverPhotoPixels = new byte[size];
CoverPhotoBitmap.CopyPixels(CoverPhotoPixels, stride, 0);
byte[] HiddenPhotoPixels = new byte[size];
HiddenPhotoBitmap.CopyPixels(HiddenPhotoPixels, stride, 0);
ResultPhotoBitmapSource = BitmapSource.Create(CoverPhotoBitmap.PixelWidth, CoverPhotoBitmap.PixelHeight, 96, 96, PixelFormats.Rgb32, null, HiddenPhotoPixels, stride);
}
您可以将结果 BitmapSource
转换为 BitmapImage
。检查此问题的答案:BitmapSource to BitmapImage.
不标记为重复,因为它不是同一个问题,尽管答案适用。
我想在 WPF 中开发一个隐写术软件,所以我需要直接访问像素,我正在尝试将位图转换为数组并进行编辑,问题是我只能通过 BitmapSource 重新创建它(我是不是对吧?)而且我无法正确地重新创建它。我得到的是黑白图像。
public static void Conceal(BitmapImage CoverPhotoBitmap, BitmapImage HiddenPhotoBitmap, ref BitmapSource ResultPhotoBitmapSource)
{
int stride = CoverPhotoBitmap.PixelWidth * 4;
int size = CoverPhotoBitmap.PixelHeight * stride;
byte[] CoverPhotoPixels = new byte[size];
CoverPhotoBitmap.CopyPixels(CoverPhotoPixels, stride, 0);
byte[] HiddenPhotoPixels = new byte[size];
HiddenPhotoBitmap.CopyPixels(HiddenPhotoPixels, stride, 0);
ResultPhotoBitmapSource = BitmapSource.Create(CoverPhotoBitmap.PixelWidth, CoverPhotoBitmap.PixelHeight, 96, 96, PixelFormats.Rgb32, null, HiddenPhotoPixels, stride);
}
您可以将结果 BitmapSource
转换为 BitmapImage
。检查此问题的答案:BitmapSource to BitmapImage.
不标记为重复,因为它不是同一个问题,尽管答案适用。