2016-05-14 3 views
2

Есть ли способ сглаживания двухтонального растрового изображения (в .NET) без сжатия изображения. Например, у меня есть черно-белое изображение, а черные объекты имеют зубчатые края. Я хотел бы сгладить края на «небелых» объектах, не сокращая все растровое изображение.Сглаживание 2-тонных растровых изображений в .net без сокращения

Вот как я в настоящее время выполняет свои операции:

Dim from_bm = New Bitmap(frm.ClientSize.Width, frm.ClientSize.Height) 
Dim bm_gr As Graphics = Graphics.FromImage(from_bm) 
Dim bm_hdc As IntPtr = bm_gr.GetHdc 

BitBlt(bm_hdc, 0, 0, frm.ClientSize.Width, frm.ClientSize.Height, hdc, 0, 0, SRCCOPY) 
bm_gr.ReleaseHdc(bm_hdc) 

Dim w As Integer = (from_bm.Width/4) ' This is the operation I wish to avoid 
Dim h As Integer = (from_bm.Height/4) 
to_bm = New Bitmap(w, h) 

Dim gr As Graphics = Graphics.FromImage(to_bm) 
gr.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic 
gr.DrawImage(from_bm, 0, 0, (w - 1), (h - 1)) 
gr.DrawImageUnscaled(to_bm, 0, 0) 

Я интересно, если есть какой-то алгоритм или библиотека я мог бы использовать для выполнения выше, но без сжатия изображения выше. Причина, по которой я хочу избежать сжатия изображения, заключается в том, что я не могу сохранить полное растровое изображение в памяти, я могу сохранить только то, что отображается на экране, и это вызывает некоторые проблемы для меня.

ответ

0

Я не уверен, поняв, что ты имел в виду, но я думаю, что вы можете установить режим интерполяции графического объекта с помощью:

graphic.InterpolationMode = InterpolationMode.NearestNeighbor 
Смежные вопросы