Цвет SetPixel при чтении отличается от начального значения - Visual Basic .NET
Формулировка задачи:
Добрый день, коллеги!
Возникла странная проблема. Загружаю изображение, закрашиваю на нем пиксель, сохраняю в файл, затем вновь загружаю это изображение и считываю этот пиксель, программа выдает совершенно другое значение...
например, если я заношу цвет так
то при считывании
программа выдаёт цвет (255, 50, 19, 0)
при этом, если сохранять в PNG формате, то все работает корректно...
отсюда делаю вывод, что проблема именно в том, что при сохранении, у изображения меняются цветовые показатели, в зависимости от формата..
Кто подскажет, как правильно сохранять файл?
jpg выбрал т.к. это максимально легкий и сжатый формат. форматы типа bmp и png не подходят, там размер получается раз в 20-40 больше...
Листинг программы
- Dim bm As Bitmap = Image.FromFile(f)
- bm.SetPixel(500, 500, Color.FromArgb(255, 2, 2, 2))
- bm.Save(ListBox1.SelectedItem & "\Image.jpg")
Листинг программы
- Dim bm As Bitmap = Image.FromFile(f)
- msgbox(bm.GetPixel(500, 500).toString)
Листинг программы
- bm.Save("\Image.png", System.Drawing.Imaging.ImageFormat.Png)
Решение задачи: «Цвет 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д