Сохранение монохромного растрового изображения - PullRequest
0 голосов
/ 16 октября 2018

Original Исходный текст изображения

Большую часть рабочего дня я потратил на то, чтобы понять, как лучше всего получить изображение RGB и преобразовать его в черно-белое изображение.,У меня есть 7 принтеров этикеток, каждый из которых обычно принимает растровые изображения 1bpp.Проблема, с которой я сейчас сталкиваюсь, заключается в преобразовании изображения.Я должен использовать .NET VB.Я перепробовал много разных методов, от переписывания информации о цвете каждого пикселя до этого более сложного обходного пути, который я нашел в MSDN.К сожалению, больших успехов не было.

Моя цель состоит в том, чтобы выводить то же самое, что и MS Paint Сохранить как монохромные растровые изображения, потому что я протестировал его для работы на всех принтерах.Глупо думать, что это будет легко и просто.

Наверное, мой вопрос в том, какие инструменты MS Paint использует для преобразования и сохранения изображения в виде монохромного изображения?Если это неизвестно, каковы другие способы сделать это?

MSDN Method Текст метода MSDN MS Paint MS Paint Monochrome Text

 Private Shared Function ConvertImage(filepath As String) As String
    Dim grayscale As New Imaging.ColorMatrix(New Single()() _
    {
        New Single() {0.299, 0.299, 0.299, 0, 0},
        New Single() {0.587, 0.587, 0.587, 0, 0},
        New Single() {0.114, 0.114, 0.114, 0, 0},
        New Single() {0, 0, 0, 1, 0},
        New Single() {0, 0, 0, 0, 1}
    })
    Dim bmp As Bitmap = New Bitmap(filepath)
    Dim imgattr As New Imaging.ImageAttributes()
    imgattr.SetColorMatrix(grayscale)
    Using g As Graphics = Graphics.FromImage(bmp)
        g.DrawImage(bmp, New Rectangle(0, 0, bmp.Width, bmp.Height),
                0, 0, bmp.Width, bmp.Height,
                GraphicsUnit.Pixel, imgattr)
    End Using
    filepath = IO.Path.GetTempPath & "IntegraCABLabel.bmp"
    bmp.Save(filepath)
    ConvertImage = filepath
End Function

Private Shared Function ConvertImage(filepath As String) As String
    Dim bmp As Bitmap = New Bitmap(filepath)
    Dim X As Integer
    Dim Y As Integer
    Dim clr As Integer

    For X = 0 To bmp.Width - 1
        For Y = 0 To bmp.Height - 1
            clr = (CInt(bmp.GetPixel(X, Y).R) +
                   bmp.GetPixel(X, Y).G +
                   bmp.GetPixel(X, Y).B) \ 3
            bmp.SetPixel(X, Y, Color.FromArgb(clr, clr, clr))
        Next Y
    Next X
    filepath = IO.Path.GetTempPath & "IntegraCABLabel.bmp"
    bmp.Save(filepath)
    ConvertImage = filepath
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...