|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
Добрый день уважаемые форумчане. Возникла следующая проблема при работе с изображениями. Загружается одно большое изображение и потом оно ужимаеться на более мелкие и в конце создается битмап с размеров оригинального изображения и в него копируется изображения и сохраняется. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
После сохранения картинка становится в 2 раза меньше. Может кто-то сталкивался с таким? По хорошему после сохранения картинка должна быть примерно такого же рамера как и оригинальная. Проблема как я понимаю в сжатии изображения, но как определить какой уровень сжатия в исходного изображения? Помогите решить проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 13:17 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
Так же пробовал использовать Encoder для jpeg формата: Код: c# 1. 2. 3.
Поигравшись с уровнем компресси, определил что он должен быть установлен в 95 для того что размер изображения исходного приблизительно соответствовало выходному изображению. Но этот способ мне показался не очень красивым. Может кто-то знает способ по лучше? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 13:30 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
t_e_m_a Код: c# 1.
Алгоритм Jpeg по умолчанию предполагает ухудшение качества изображения. Поэтому преобразование в Jpeg и обратно приведет к тому, что итоговый файл будет меньше размером, чем исходный. Насколько - определяется уровнем сжатия. Преобразуйте в png, или зипуйте исходный массив байт ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 13:49 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
авторАлгоритм Jpeg по умолчанию предполагает ухудшение качества изображения. Поэтому преобразование в Jpeg и обратно приведет к тому, что итоговый файл будет меньше размером, чем исходный. Насколько - определяется уровнем сжатия. Преобразуйте в png, или зипуйте исходный массив байт По чему тогда когда я уровень сжатия ставлю в 100 то размер файла выростает в 2 раза? А если без преобразований, можно как-то скопировать изображение? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 13:52 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
t_e_m_aПо чему тогда когда я уровень сжатия ставлю в 100 то размер файла выростает в 2 раза?как вариант - исходный файл содержит индексированную палитру. А jpeg пережимает в 24-битный цвет ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 13:55 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
авторкак вариант - исходный файл содержит индексированную палитру. А jpeg пережимает в 24-битный цвет Так исходный файл тоже jpeg. Пробовал менять 24 на 32 -бит на цвет но на размер это никак не влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 14:01 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
t_e_m_aно как определить какой уровень сжатия в исходного изображения? 5552857 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 14:10 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
Попробовал этот вариант с разными изображениями и в результате размер исходного изображения равен выходному. Но хотелось бы как-то красивее это сделать. авторТак же пробовал использовать Encoder для jpeg формата: ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg); System.Drawing.Imaging.EncoderParameters ep = new System.Drawing.Imaging.EncoderParameters(); ep.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)95); ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 14:20 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
автор5552857 спасибо огромное. Но такой способ врядли мне подойдет. Так как приложение не ориентировано на обработку изображений. Скорее всего придется ставить уровень сжатия в 95 для всех jpeg изображений. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 14:31 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
Все таки этот способ не совсем хорош, в некоторых случаях дает плохой результат Код: c# 1. 2. 3.
Может кто знает другой способ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 15:10 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
t_e_m_a, ты явно не к тому стремишься. Размер при сжатии очень сильно зависит от сжимаемого содержимого. Создай в Пайнте пустое изображение залитое белым цветом, сохрани в jpg. Размер будет всего несколько килобайт. Теперь нарисуй что-нибудь на этом фоне, просто поводи пером. Сохрани в jpg. Размер будет намного больше, десятки килобайт. Размер файла jpg очень сильно зависит от самого рисунка. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 16:58 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
авторt_e_m_a, ты явно не к тому стремишься. Размер при сжатии очень сильно зависит от сжимаемого содержимого. Создай в Пайнте пустое изображение залитое белым цветом, сохрани в jpg. Размер будет всего несколько килобайт. Теперь нарисуй что-нибудь на этом фоне, просто поводи пером. Сохрани в jpg. Размер будет намного больше, десятки килобайт. Размер файла jpg очень сильно зависит от самого рисунка. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 17:02 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
Про содержимое рисунка это все понятно, я ж не сжимаю. Я просто копирую изображение. А в результате получаю либо файл в 2-а раза больше либо меньше. Толко что попробовал скопировать изображение таким образом Код: c# 1. 2. 3. 4. 5. 6. 7.
Но все равно входной файл отличается от выходного на 30 кб. Как такое может быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 17:07 |
|
Работа с изображениями. Копирование без потерь.
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7.
Кто-то может объяснить по чему при таком способе копирования изображения все равно отличаются по размеру? За ранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 17:43 |
|
|
start [/forum/topic.php?fid=20&tid=1401812]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 337ms |
total: | 482ms |
0 / 0 |