C# 生成图片时,要求设置DPI,怎么设置??

Y2010M11D24 2011-03-10 07:20:26
引用

目前我已经设置了帧位数为24,这样确保图片的质量,
但是不知道怎么设置dpi,默认就是96的,但是原图不是的,所以我要求原图的dpi是多少,在绘制的时候就是多少。
如果不是原图的dpi就出现,图片用ps打不开等等问题,用图片查看器是没有问题的。

这个问题应该怎么解决,请看清楚问题,是想要设置dpi,而不是怎么画图,之前有提问过,但是回答的都不对。


请看清楚问题,如何设置要生成图片的dpi和导入图片的dpi相同。

分不是很多,谁知道,分全部拿去。
...全文
2806 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Y2010M11D24 2011-03-10
  • 打赏
  • 举报
回复
贴代码,以后可能对大家有用。
引用
//此处得到上传图片的dpi
System.Drawing.Image img = System.Drawing.Image.FromFile(url);//得到文件的路径
//获取DPI
float dpix = img.HorizontalResolution;
float dpiy = img.VerticalResolution;

/****************************************************************/下面为画图
//创建大图
Bitmap bitmap = new Bitmap(imgWidthB, imgHeightB,PixelFormat.Format24bppRgb);
//设置其生成图片的dpi
bitmap.SetResolution(dpix,dpiy);

//新建一个画板
System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(bitmap);

System.Drawing.Drawing2D.InterpolationMode interpolationMode = new System.Drawing.Drawing2D.InterpolationMode();
System.Drawing.Drawing2D.SmoothingMode smoothingMode = new System.Drawing.Drawing2D.SmoothingMode();
//设置高质量查值法
graphic.InterpolationMode = interpolationMode;
//设置高质量,低速度呈现平滑程度
graphic.SmoothingMode = smoothingMode;
//清空画布并以透明背景色填充
graphic.Clear(System.Drawing.Color.Transparent);

System.Drawing.Image originalImage = System.Drawing.Image.FromFile(url + "\\" + newFileName);

graphic.DrawImage(originalImage, new System.Drawing.Rectangle(x, y, imgWidthB, imgHeightB), new System.Drawing.Rectangle(x, y, imgWidth, imgHeight), System.Drawing.GraphicsUnit.Pixel);

bitmap.Save(fileXltPathB);//保存图片ok
Y2010M11D24 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wxr0323 的回复:]
引用 5 楼 y2010m11d24 的回复:

引用 4 楼 wxr0323 的回复:
DPI在印刷中起到很的作用,决定印刷的质量。
但是c#中GDI都是采用默认的DPI--即你显示器的DPI。
这个就比较麻烦了,比如进入打印,或者印刷往往尺寸不对。
其实Bitmap里面有个属性专门设置DPI的,“SetResolution”
使用方法就是

C# code
Bitmap b……
[/Quote]

已经引用了, 刚刚在MSDN中找到方法了,谢谢。

但是我还有一个问题,就是我读取路径中的图片时,怎么知道它的dip呢,这个怎么获取呢。
能告知吗?

我看有一部分图片的dip是300,72,96的,各不相同啊,这代码页不能写死啊,怎么办呢。
子夜__ 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 y2010m11d24 的回复:]

引用 4 楼 wxr0323 的回复:
DPI在印刷中起到很的作用,决定印刷的质量。
但是c#中GDI都是采用默认的DPI--即你显示器的DPI。
这个就比较麻烦了,比如进入打印,或者印刷往往尺寸不对。
其实Bitmap里面有个属性专门设置DPI的,“SetResolution”
使用方法就是

C# code
Bitmap bmp = new Bitmap(width, hei……
[/Quote]

在你的页面上面
using System.Drawing;
Y2010M11D24 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wxr0323 的回复:]
DPI在印刷中起到很的作用,决定印刷的质量。
但是c#中GDI都是采用默认的DPI--即你显示器的DPI。
这个就比较麻烦了,比如进入打印,或者印刷往往尺寸不对。
其实Bitmap里面有个属性专门设置DPI的,“SetResolution”
使用方法就是

C# code
Bitmap bmp = new Bitmap(width, height);
bmp.SetResolut……
[/Quote]

这条信息,我看过了,但是没有 bmp.SetResolution(DPI, DPI);方法啊。

即使我写上去了,但连提示引用文件都没有,怎么回事,不是C#用的吧。
我的vs版本是vs2005,和这个有关系吗。


子夜__ 2011-03-10
  • 打赏
  • 举报
回复
DPI在印刷中起到很的作用,决定印刷的质量。
但是c#中GDI都是采用默认的DPI--即你显示器的DPI。
这个就比较麻烦了,比如进入打印,或者印刷往往尺寸不对。
其实Bitmap里面有个属性专门设置DPI的,“SetResolution”
使用方法就是
Bitmap bmp = new Bitmap(width, height);
bmp.SetResolution(DPI, DPI);

第一个参数表示x坐标上的dpi,第二个就是y坐标上的dpi;

参考博客园

Y2010M11D24 2011-03-10
  • 打赏
  • 举报
回复
等待高手解答。。
Y2010M11D24 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 msdnxgh 的回复:]
分不多
[/Quote]
MSDNXGH 2011-03-10
  • 打赏
  • 举报
回复
分不多

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧