将图像尺寸调整为6x4或其他尺寸,以适合介质尺寸,C#WPF

时间:2020-07-05 09:22:13

标签: c# wpf printing photo image-resizing

看了几篇文章后,我发现自己很困惑。 我要做的是将分辨率和dpi不同但比例为4:3的图像打印到6x4的照片纸上

我发现分辨率为2048 x 1365 300DPI jpeg图像效果很好。

但是如果我选择分辨率更高的其他图像并仅使用

                        var bi = new BitmapImage();
                        bi.BeginInit();
                        bi.CacheOption = BitmapCacheOption.OnLoad;
                        bi.UriSource = new Uri(SelectedImageSourceStr);

                        bi.EndInit()

using (var dc = vis.RenderOpen())
                        {
                            dc.DrawImage(bi, new Rect { Width = bi.Width, Height = bi.Height});
                        }
                        
                        dlg.ShowDialog();
                        dlg.PrintVisual(vis, Properties.Settings.Default.SelectedPrinter);

在dlg中,我选择确切的纸张类型,等等,它打印偏移的图像,或者只是从某些图像中裁切出来,等等...

我还要尝试设置以下内容:

dlg.PrintTicket.PageMediaSize = new PageMediaSize(96*6, 96*4);

这不能解决问题,因此我继续这样做: Print Images With High Resolution

我尝试对其进行测试并进行调整,但是符合要求:

        printimagaprint = new Bitmap((int)final_width_dpi, (int)final_height_dpi);

因为出现异常,因为最终宽度和最终高度的值均为负值,所以我也从打印机的负值中得到...

请任何人告诉我如何使用任何打印机以及任何比率为4:3的图像来实现结果的方法... 我知道我必须了解打印机的DPI设置正确的格式,并根据它调整图片。 但是调整图片以适合图像尺寸并将其缩放到无边框的全尺寸对我来说是个问题。

在这里阅读了越来越多的答案后,我感到困惑... 准确地说, 我可以使用它,但这不是我的应用程序的最佳方法:

  string fileName = SelectedImageStr;
                        var p = new Process();
                        p.StartInfo.FileName = fileName;
                        p.StartInfo.Verb = "Print";
                        p.Start();

谢谢

0 个答案:

没有答案
相关问题