Я могу сохранить захваченное изображение со сканера штрих-кода, используя этот код:Дисплей захватил Jpeg файл
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.DefaultExt = ".jpg";
dlg.Filter = "JPEG Images (.jpg)|*.jpg|All files (*.*)|*.*";
if (dlg.ShowDialog() == true)
{
using (FileStream file = File.OpenWrite(dlg.FileName))
{
file.Write(e.ImageBuffer, 0, e.ImageSize);
}
}
Однако, я хотел бы, чтобы отобразить захваченное изображение с помощью WPF, но я получаю искаженное изображение.
private void _barcodeScannerInstance_SavePhotoEvent(object sender, ImageEventArgs e)
{
SetBitmap(e.ImageBuffer, 350, 263, 96);
}
private void SetBitmap(byte[] image, int width, int height, int dpi)
{
MainWindow.Instance.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate()
{
BitmapSource bitmapSource = BitmapSource.Create(
width, height, (double)dpi, (double)dpi, PixelFormats.Bgr24, null, image, ((width * 24 + 31) & ~31) >> 3);
HwModeScreen.BarcodeImageCanvas.Children.Clear();
Image myImage = new Image();
myImage.Width = HwModeScreen.BarcodeImageCanvas.ActualWidth;
myImage.Height = HwModeScreen.BarcodeImageCanvas.ActualHeight;
myImage.Stretch = Stretch.Fill;
myImage.Source = bitmapSource;
HwModeScreen.BarcodeImageCanvas.Children.Add(myImage);
});
Вот изображение, которое я вижу. Это должна быть черно-белая фотография коробки клинеекса.
Вот сохраненный файл JPG:
Если вы разрабатываете сканер штрих-кода, вы должны переключиться на формат без потерь, например, tiff или bitmap. jpeg-изображения оптимизированы для захвата изображений, которые нужно просматривать глазами человека. tiff и bitmap - это форматы, обычно используемые в инженерных и научных сценариях. – MedicineMan
Это просто простой тест, чтобы узнать, работают ли функции камеры или нет. – Robert