Chuyển ảnh màu về dạng GreyScale trong C#

greyscale

Hình ảnh dạng Greyscale còn gọi là ảnh xám có rất nhiều ứng dụng trong thực tế, đặc biệt là trong in ấn. Chẳng hạn một số hình ảnh không cần nhiều màu sắc mà chỉ cần độ rõ của ảnh như mã vạch in trên sản phẩm. Với mã vạch Barcode, QRCode, PDF418,… nếu không phải ảnh dạng Greysale thì khi in trên nền thẻ nhựa sẽ bị nhòe. Trong bài viết này, mình sẽ giới thiệu kỹ thuật chuyển ảnh màu thông thường thành ảnh dạng Greyscale trên C#.

Add References:

System.Xaml;
PresentationCore;
WindowsBase

Namespace:

using System.Windows.Media;
using System.Windows.Media.Imaging;

Hàm sử dụng:

public void SaveAsGrayscaleJpeg(String loadPath, String savePath)
{
    //loadPath: đường dẫn đến file ảnh (vd: D:\\mypic.jpg)
    //savePath: đường dẫn lưu ảnh (vd: D:\\mypic_grey.jpg)
    using (FileStream fs = new FileStream(savePath, FileMode.Create))
    {
        BitmapSource img = new BitmapImage(new Uri(new FileInfo(loadPath).FullName));
FormatConvertedBitmap convertImg = new FormatConvertedBitmap(img,   PixelFormats.Gray8, null, 0);
        JpegBitmapEncoder encoder = new JpegBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(convertImg));
        encoder.Save(fs);
     }
}

Related posts

Leave a Comment