Цвет SetPixel при чтении отличается от начального значения - Visual Basic .NET
Формулировка задачи:
Добрый день, коллеги!
Возникла странная проблема. Загружаю изображение, закрашиваю на нем пиксель, сохраняю в файл, затем вновь загружаю это изображение и считываю этот пиксель, программа выдает совершенно другое значение...
например, если я заношу цвет так
то при считывании
программа выдаёт цвет (255, 50, 19, 0)
при этом, если сохранять в PNG формате, то все работает корректно...
отсюда делаю вывод, что проблема именно в том, что при сохранении, у изображения меняются цветовые показатели, в зависимости от формата..
Кто подскажет, как правильно сохранять файл?
jpg выбрал т.к. это максимально легкий и сжатый формат. форматы типа bmp и png не подходят, там размер получается раз в 20-40 больше...
Решение задачи: «Цвет SetPixel при чтении отличается от начального значения»
textual
Листинг программы
Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click Dim myImageCodecInfo As ImageCodecInfo = GetEncoderInfo(ImageFormat.Jpeg) Dim myEncoderParameters As EncoderParameters = New EncoderParameters(1) myEncoderParameters.Param(0) = New EncoderParameter(Encoder.Quality, 100) '100 - сжатие с минимальными потерями (но не без потерь) PictureBox1.Image.Save("tst1_100.jpg", myImageCodecInfo, myEncoderParameters) End Sub Private Function GetEncoderInfo(ByVal format As ImageFormat) As ImageCodecInfo Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageDecoders() Dim codec As ImageCodecInfo For Each codec In codecs If codec.FormatID = format.Guid Then Return codec End If Next codec Return Nothing End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д