图像的处理以及更改图像色彩模式

记录一下最近工作中遇到的有关图像处理的问题。
一、使用C#进行图像的放大,缩小操作。
二、使用C#更改图像的色彩模式。
三、对图像进行输出。

使用C#进行图像的放大,缩小操作。

首先想到的应该是读取一个image再使用bitmap进行缩放处理。

Image imageInfo = Image.FromFile("文件路径");
Bitmap newImage = new Bitmap(imageInfo, 宽(像素), 高(像素));

或者是使用bitmap进行文件流处理,然后使用Graphics绘制新图像。

// An highlighted block
//通过流来获取文件信息从而获得图像的Bitmap 
Stream originStream = File.OpenRead("文件路径");
Bitmap b= new Bitmap(originStream);

 public static Bitmap GetThumbnail(Bitmap b, int destHeight, int destWidth)
        {
            System.Drawing.Image imgSource = b;
            System.Drawing.Imaging.ImageFormat thisFormat =imgSource.RawFormat; 
            Bitmap outBmp = new Bitmap(destWidth, destHeight);
            Graphics g = Graphics.FromImage(outBmp);
            g.Clear(System.Drawing.Color.Transparent);
            // 设置画布的描绘质量         
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.InterpolationMode =InterpolationMode.HighQualityBicubic;
            g.DrawImage(imgSource, 0, 0, destWidth, destHeight);
            g.Dispose();
            return outBmp;
    }

二者怎么选择?
如果单纯进行图像缩放使用第一种
如果需要进行绘图操作,比如在图片上添加描述文字则使用第二种。
g.DrawImage(imgSource, 0, 0, destWidth, destHeight);有多个重载,可通过此方法设置背景画布,笔者这个地方则没有设置背景画布大小。

二、使用C#更改图像的色彩模式。

为什么要更改图像色彩模式?
业务印刷行业需要用到CMYK 的色彩模式,而我们平时使用的RGB模式。
更改色彩模式需要用到一个库,Magick.NET-Q16-HDRI-AnyCPU。直接通过nuget即可下载。
使用这个库可以更改图片的格式,图片的色彩模式等各种参数。

// An highlighted block
MagickImage magickImage = new MagickImage("一个bitmap");
magickImage.ColorSpace = ColorSpace.CMYK;

三、对图像进行输出。

通过上面两句代码即可完成CMYK模式的转换,转换后magickImage.Write(“文件储存路径”);可直接输出CMYK模式的图片。
笔者当时遇见一个问题,将magickImage转换为bitmap之后直接对bitmap进行输出,得到的图片依旧为RGB模式,所以不建议使用bitmap进行输出。
不建议以MemoryStream的形式进行输出,太麻烦了,而且需要转为bitmap,可能输出不对。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值