Исходный текст изображения
Большую часть рабочего дня я потратил на то, чтобы понять, как лучше всего получить изображение RGB и преобразовать его в черно-белое изображение.,У меня есть 7 принтеров этикеток, каждый из которых обычно принимает растровые изображения 1bpp.Проблема, с которой я сейчас сталкиваюсь, заключается в преобразовании изображения.Я должен использовать .NET VB.Я перепробовал много разных методов, от переписывания информации о цвете каждого пикселя до этого более сложного обходного пути, который я нашел в MSDN.К сожалению, больших успехов не было.
Моя цель состоит в том, чтобы выводить то же самое, что и MS Paint Сохранить как монохромные растровые изображения, потому что я протестировал его для работы на всех принтерах.Глупо думать, что это будет легко и просто.
Наверное, мой вопрос в том, какие инструменты MS Paint использует для преобразования и сохранения изображения в виде монохромного изображения?Если это неизвестно, каковы другие способы сделать это?
Текст метода MSDN
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