我有很多光栅文件,并且知道它们在最终图像中的比例。这些文件的大小和分辨率完全不同(很多非常大)。
如何将它们设为位图文件?
最终位图的分辨率必须等于传入的位图的最小分辨率。
我试图这样做,但我无法得到我想要的东西:
for (int i = 0; i < temp.Length; i++)
{
Point location = new Point(temp[i].Propx* width * 300/ 25.4, temp[i].Propy*height* 300/ 25.4);
Size size = new Size(temp[i].Propwidth*width * 300/ 25.4, temp[i].Propheight*300* height/ 25.4);
Rect rect = new Rect(location, size);
drawingContext.DrawImage(tempBS[i], rect);
}
drawingContext.Close();
Size finalSize = new Size(300*width/25.4, 300*height/25.4);
var bmp = new RenderTargetBitmap(
(int) finalSize.Width,(int) finalSize.Height,
300d, 300d,
PixelFormats.Pbgra32);
bmp.Render(drawingVisual);
using (var fs = File.OpenWrite("D:\\1.jpg"))
{
var encoder = new JpegBitmapEncoder() { QualityLevel = 100 };
encoder.Frames.Add(BitmapFrame.Create(bmp));
encoder.Save(fs);
}
其中宽度和高度是最终尺寸位图,单位为mm。 Propwidth - 最终位图的百分比(0到1)。但我只能看到部分位图。
我将向我想要学习的简单例子进行解释。假设我们有两个位图文件:
3000至4000像素,分辨率为250 dpi。它的宽度是左侧最终图像的0.5倍。
1000 x 1000像素,分辨率为350 dpi。右侧生成图像的宽度为0.5。
有必要获得一个位图,而不是更小的已知尺寸,单位为mm(或英寸,让6х16英寸),并具有最高的分辨率和质量。最小结果分辨率为100dpi。
对于此示例,结果应为:size2000х750,resolutoin 100dpi