![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| carper |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 1 Всего: 8 |
Есть баг, описанный в http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4881314
Суть очень проста: Вот такой вот код, который просто берет картинку из одного файла и пишет ее в другой:
Не верно работает с определенными jpg файлами. А именно, при сохранении получаем картинку с "инвертированными" цветами. Предложенное в обсуждении бага решение проблемы:
Не работает для исходного файла, имеющего (по мнению JAVA) тип TYPE_3BYTE_BGR. Что интересно, попытки пересохранения исходного файла из любого вьювера, с тем же, или другим расширением, тут же решают эту проблему. При этом ни один вьювер не показал, чем же отличаются эти файлы, да и не вижу смысла искать эти различия, т.к. аналогичные файлы показываются везде (по крайней мере ни один из имеющихся у меня просмоторщиков, а также Photoshop не имели никаких проблем с отображением и сохранением этого файла) без проблем и это не единичный случай "испорченного" файла. Есть ли пути решения этой проблемы? Да, проблемный файлик с именем myimage.jpg и результат его пересохранения с именем image.jpg, в сумме на 1.3Mb можно забрать с http://ifolder.ru/16891328 http://ifolder.ru/16891318 |
||||
|
|||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 6 Всего: 93 |
Какая версия Java используется?
Я сегодня-завтра посмотрю -- бага для меня интересная так как я много занимался изображениями в Java. -------------------- Да. Именно так. |
|||
|
||||
| Дрон |
|
||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 6 Всего: 93 |
Что-то с ifolder не могу скачать, висит он похоже.
Попробую пока так что-нибудь предложить. Например загрузить не через ImageIO, а через JAI. Идём сюда: https://jai.dev.java.net/binary-builds.html Скачиваем например вариант Java (no native acceleration) и добавляем в Class Path (так это вроде зовётся) своего приложения ссылки на jai_core.jar и jai_codec.jar Тогда прочитать можно будет так:
А записать можно и по-старому. Единственное отличие, что на выходе получается RenderedImage, а не BufferedImage, но это не должно быть проблемой. Ну и ещё одно замечание -- при таком подходе из JPEG потеряется встроенный цветовой профиль (если он был, конечно), чтобы его сохранить надо ещё несколько шагов сделать. Но для начала надо с загрузкой разобраться.
Как именно не работает? Фразы вроде "не работает" это для домохозяек и бухгалтерш, программист должен чётко формулировать свою проблему Это сообщение отредактировал(а) Дрон - 17.3.2010, 21:56 -------------------- Да. Именно так. |
||||
|
|||||
| carper |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 1 Всего: 8 |
Версия JAVA 1.6.0_17-b04
"Как именно не работает? " Уже описал - вновь сохраненное изображение выглядит инвертированным, также приложил ссылки (упс, см. окончание сообщения) по которым можно посмотреть оба изображения. Вот инфа, АБСОЛЮТНО ОДИНАКОВАЯ для исходного и пересохраненного файлов: 1600x1068 Бит на план 24 Цветовая модель RGB (ага, для исходного тоже она) N плана 1 Бит на пиксель 24 Сжатие JPEG Формат JPEG TrueColor(v1.1) А вот РАЗНАЯ из EXIF, сначала для исходного файла: BitsPerSample 8 ColorComponenets 3 YCbCrSubSampling YCbCr4:4:4 (1 1) EncodingProcess Baseline DCT, Huffman coding А теперь для пересохраненного: BitsPerSample 8 ColorComponenets 3 YCbCrSubSampling YCbCr4:2:0 (2 2) JIFFVersion 1.02 -- Этого параметра для исходного файла нет вообще ResolutionUnit None -- Этого параметра для исходного файла нет вообще YResolution 1 -- Этого параметра для исходного файла нет вообще EncodingProcess Baseline DCT, Huffman coding Вот кусочек заголовка "нормального" изображения:
Вот "изуродованного"
P.S. про библиотеку jai в курсе, но не хотелось бы плодить сущности без необходимости, т.к. мне в общем-то были нужны простейшие операции - типа загрузить jpeg, отмасштабировать, сохранить обратно. Да, по поводу ifolder: "Сервис iFolder приостановлен следователями 3-й ЧС ГСУ при ГУВД Москвы." Тут форум программистский и посещаемый не только мужчинами, поэтому писать, что я думаю обо всем этом воздержусь. Вот новые ссылки, возможно до этого сервиса эти еще не успеют добраться. http://www.megaupload.com/?d=YEKJX064 http://www.megaupload.com/?d=P3NETXWE |
||||
|
|||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 6 Всего: 93 |
О, как я удачно зашёл.
Скачал фотографии, ну что ж могу поздравить, моя софтина тоже её неправильно читает. Буду разбираться -------------------- Да. Именно так. |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 6 Всего: 93 |
В общем, кроме как через JAI нормально прочитать не получается. Почему -- не ясно, лезть в дебри этого файла времени нет.
Но мне кажется, что проблема именно в чтении, а не в записи, потому что если читать через JAI, а сохранять через ImageIO, то всё нормально. Попробовал ещё шутки ради через Toolkit.getDefaultToolkit().createImage, но тот, похоже, вообще эту картинку прочитать не может. -------------------- Да. Именно так. |
|||
|
||||
| carper |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 1 Всего: 8 |
Спасибо.
Обидно, придется использовать JAI, а всего-то и было нужно - ресайзить картинку под аватары. :( И, таки да, похоже проблема в чтении, скорее всего где-то неверно определятся формат. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |