Цвет 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы