Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Улучшения ввода-вывода изображения в Java™ SE 6.0

Основные функции
Исправленные Ошибки

Основные функции

Плагин писателя для формата файла ДЖИФА

В то время как чтение возможностей формата файла ДЖИФА было доступно начиная с Java SE 1.4, com.sun.media.imageio.plugins.gif пакет, в котором испытывают недостаток писатель. Недавно добавленный ДЖИФ отображает включения писателя, пишущий изображения, которые удовлетворяют следующие требования:

Дополнительно, писатель изображений ДЖИФА поддерживает создание изображений анимированного ДЖИФА через стандартные методы, определенные в ImageWriter класс. См., что больше деталей о ДЖИФЕ отображает писателя в Стандартном плагине для примечаний формата изображения ДЖИФА.

Новые методы для фильтрации форматов файлов

Два новых метода были представлены в ImageIO класс, которые получают суффиксы файла, которые будут фильтроваться. getReaderFileSuffixes() и getWriterFileSuffixes методы возвращают массив Strings перечисление всех суффиксов файла, связанных с форматами, распознанными текущей группой зарегистрированных читателей и писателей.

Исправленные Ошибки

API и изменения документа

4953566 mark() или reset() методы ImageInputStream class не работайте должным образом с PNG ImageReader:

Следующее примечание было добавлено к ImageInputStream спецификация класса, чтобы разъяснить это ImageReader классам позволяют вызвать flushBefore() как часть процесса декодирования:

Отметьте, что это допустимо для ImageReader, чтобы вызвать flushBefore как часть операции чтения. Поэтому, если приложение вызывает метку до передачи того потока к ImageReader, приложение не должно предположить, что отмеченная позиция останется допустимой после того, как операция чтения завершилась.

5068322 javax.imageio.plugins.jpeg.JPEGQTable.toString() метод производит неправильное описание:

toString() метод JPEGQTable класс в пакете javax.imageio.plugins.jpeg как предполагалось, возвратил a String объект, содержащий значения таблицы, но вместо этого повторенный только первая строка таблицы. Выполняемая фиксация устраняет эту ошибку.

6359957 Неправильных документов ссылка URL для спецификации PNG:

Ссылка к спецификации PNG в javax.imageio.metadata пакете была исправлена к следующему URL:

http://www.libpng.org/pub/png/spec/

6457035 javadoc для ImageInputStreamImpl.read() метод отсутствует:

ImageInputStreamImpl.java у файла было отсутствие '*' символ в начале javadoc для краткого обзора read() определение метода. Фиксация заполняет недостающий символ.

Улучшения плагина BMP

6294920 BMPImageReader класс не в состоянии читать 3BYTE_BGR изображения закодировали использование Писатель BMP с BI_JPEG сжатие:

Пытаясь записать изображение BI_JPEG тип сжатия, java.io.EOFException был брошен BMPImageReader класс. Проблема состояла в том что BMPImageReader класс не обрабатывал встроенные изображения оба из BI_JPEG и BI_PNG типы. Чтобы разрешить эту проблему, встроенная обработка изображения перемещается, чтобы разделить код.

6297016 Выводов изображение BMP искажаются при записи TYPE_3BYTE_BGR буферизованное изображение с BI_BITFIELDS сжатие:

Пытаясь записать буферизованное изображение TYPE_3BYTE_BGR введите к файлу, используя BMPWriter класс и BI_BITFIELDS тип сжатия, выходное изображение было искажено и неприменимо. Эта проблема была вызвана bitfileds масками, которые были применены к изображению bmp. Однако, формат данных изображения не был изменен согласно требованиям формата BMP. Решить эту проблему writePixels() метод используется, чтобы скопировать данные изображения правильно.

5076878 ImageIO Писатель BMP пишут файлы на 32 бита для 24 растровых изображений:

ImageIO.write методика, представленная файл BMP как 32 растровых изображения, даже если у исходного изображения было представление на 24 бита на пиксель. Фиксация включает writePixels процедура всякий раз, когда число бит на пиксель меньше чем размер типа буфера данных (например, с TYPE_INT_RGB, фактическое число бит на пиксель 24, в то время как размер типа буфера данных 32).

6332480 BMPReader класс не в состоянии читать TYPE_BYTE_GRAY изображение, закодированное BMPWriter класс с BI_RLE8 сжатие:

BMPReader класс должным образом не читал TYPE_BYTE_GRAY изображение, записанное с BMPWriter класс используя BI_RLE8 сжатие. Проблема состояла в том, что процедуры декодирования RLE (и RLE4 и RLE8) по ошибке использовали ширину целевой области вместо высоты, чтобы вычислить диапазон строк изображения для того, чтобы скопировать. Выполняемая фиксация использует высоту целевой области, чтобы вычислить диапазон.

6399660 Используя подвыборку со сжатием изменяет цвета для некоторых из типов изображения для BMP:

В то время как использование всех поддерживаемых типов сжатия для BMP, отличающегося, влияет на изображении, были обнаружены включая размывание, различное цветное появление, и небольшое повреждение изображения. Выполняемая фиксация разделяет обработку сжатие BI_RGB и сжатие BI_RGB следующим образом:

Управление производительностью и управление ресурсами

6299405 ImageInputStreamImpl класс все еще использует finalize() метод, который вызывает java.lang.OutOfMemoryError:

finalize() метод должен был быть освобожден, и его функциональность (закрывающий поток) должна быть заменена более быстрым механизмом. Завершение () метод не может быть легко освобождено в ImageInputStreamImpl уровень, так как сторонние подклассы IISI могут положиться finalize() метод вызывая их close() метод согласно спецификации. Однако, для ImageInputStreamImpl подклассы под управлением Sun, finalize() методы могут быть освобождены. Механизм Устройства обработки отходов Java2D используется вместо этого.

6266748 JPEGImageWriter.write() метод делает копию растра:

Запись () метод JPEGImageWriter класс содержавший неэффективный памятью код. Предложенная фиксация помогает улучшить производительность для простых представленных изображений.

6336804 javax.imageio.ImageIO класс может обработать утечки в некоторых методах:

Часть из read() и write() методы удобства в javax.imageio.ImageIO класс должным образом не закрывал потоки и располагал экземпляры читателя или писателя в попытке и наконец блокирует. Как фиксация соответствующие примечания были добавлены к javadocs каждого метода указание, является ли это обязанностью вызывающей стороны закрыть обеспеченный поток или нет.

6347575 FileImageInputStream.readInt () и подобные методы неэффективны:

Вызов read() метод FileImageInputStream 4x было намного более дорогим чем создание единственного звонка read(byte[]) метод с кэшируемым байтовым массивом. Этот факт, оказанный глубокое влияние на производительность чтения маленького PNG и других изображений. Исправления выполнялись для readShort() и readInt() методы ImageInputStreamImpl класс.

6348744 PNGImageReader класс должен пропустить метаданные если ignoreMetadata флаг имеет true значение:

Перед JDK 6, PNGImageReader чтение класса все метаданные изображения, даже если ignoreMetadata флаг был установлен. Фиксация уменьшает издержки и улучшает производительность, читая маленькие изображения PNG, пропуская блоки метаданных если ignoreMetadata флаг true.

6354056 JPEGImageReader класс мог быть оптимизирован:

Читатель изображения JPEG скопированные декодируемые данные в память, но не оптимизированным способом. Выполняемая фиксация улучшает эту работу при использовании memcpy() метод вместо того, чтобы копировать один байт за один раз.

6354112 уровней компиляторной оптимизации Увеличения для libjpeg улучшить производительность времени выполнения:

libjpeg библиотека в JDK была создана с флагами компиляторной оптимизации по умолчанию. Значения этих флагов увеличиваются до более высокого уровня, чтобы позволить собственным библиотекам JPEG IJG работать быстрее.

6404011 IllegalArgumentException: "Недопустимые Данные Профиля ICC", читая определенное изображение JPEG:

Эта ошибка была исключением непроверенным и могла вызвать системный катастрофический отказ на некоторых платформах. Фиксация ловит IllegalArgumentException, который бросается ICC_Profile, и обрабатывает изображения, не принимая во внимание недопустимые цветные профили.

Устойчивость

6291034 IFileCacheImageInputStream и FileCacheImageOutputStream должен избегать использования File.deleteOnExit метод:

Оба FileCacheImageInputStream и FileCacheImageOutputStream классы, используемые функциональность deleteOnExit метод File класс. Фиксация заменила File.deleteOnExit () функциональность с рычагом завершения работы, который закрывает потоки, которые все еще открыты перед завершением работы VM.

4892630 ImageReader класс не проверяет индекса изображения, который передают к некоторым из методов:

getWidth(imgIndex), getHeight(imgIndex), и getAspectRatio(imgIndex) методы ImageReader класс не бросал IndexOutOfBoundsException если данный индекс изображения PNG испытывал недостаток диапазона. Выполняемая фиксация решает этот вопрос, выдавая исключение соответственно.

4895547 JPEGImageMetadata полученный из бросков читателя NullPointerException вызывая mergeTree() метод:

Список родительских атрибутов не содержал атрибуты, связанные с дочерним узлом и этим фактом, вызванным NullPointerException в MarkerSegment.getAttributeValue() метод, пытаясь получить дочерний элемент связанный атрибут. Выполняемая фиксация получает список атрибутов из дочернего узла.

4528643 Собственных кода JPEG выполняют вызовы JNI в пределах GetPrimitiveArrayCritical:

Запущение любого приложения, которое читает или пишет изображения JPEG с нестандартным -Xcheck:jni флаг, вызванный следующая ошибка в нескольких методах JPEGImageReader класс:

Calling other JNI functions in the scope of Get/ReleasePrimitiveArrayCritical or Get/ReleaseStringCritical

В фиксации методы, на которые влияют, окружаются макросами RELEASE/GET_ARRAYS. 

5076692 Установленных плагина читателя-писателя ввода-вывода Изображения Расширений, неприменимые в контексте апплета:

Проблема состояла в том что imageio у кода инициализации реестра не было доступа для чтения к флягам в java.ext.dirs когда код реестра вызвали от контекста апплета. Поэтому, imageio плагины, установленные к java.ext.dirs не были доступны в случае апплетов. Идея фиксации состоит в том, чтобы зарегистрировать плагины от java.ext.dirs в привилегированном блоке действия.

6342404 ImageIO сменный отказ заставляет всех читателей перестать работать:

Удаление ImageIO код плагина от пути к классу, но все еще включая запись для ImageReader плагина в META-INF/services, сделанном, используя любой из невозможных плагинов ImageIO. Чтобы исправить эту ошибку, 'пытаются поймать' блок, был добавлен к IIORegistry.registerApplicationClasspathSpis() метод, чтобы поймать ServiceConfigurationError.

6395551 Установка целевого типа, чтобы ввести спецификатор, возвращенный redr.getImageTypes (), выдает исключение для JPG:

Проблема состояла в том что новое ColorSpace экземпляр был воссоздан для встроенных цветных профилей всякий раз, когда заголовок изображения был считан. Кроме того, не было никакого средства для корректного сравнения ColorSpace и ICC_Profile классы. Этот пропуск, сделанный, сравнивая экземпляры ImageTypeSpecifier невозможный класс. Предложенное обходное решение для этой проблемы следующие: обнаружить случай когда iccCS экземпляр содержит те же самые данные профиля как недавно чтение. Если так, 'старый' экземпляр оставляют; иначе (если данные профиля, кажется, отличаются) новый экземпляр цветового пространства создается для встроенного цветного профиля.

6399616 ЯМ: JPGReader выдает исключение при использовании TYPE_CUSTOM TypeSpecifier возвращенный Reader.getImageTypes метод:

Регресс был вызван фиксацией для 4705399, куда цветное преобразование было удалено (JPEGImageReader.java строки 783 - 786), потому что это вызвало дополнительное цветное преобразование для изображений со встроенными цветными профилями. Однако, это преобразование требовалось, когда целевой тип определенные различные цветовые пространства для изображений, которые не содержат встроенные профили. Фиксация для этого случая преобразовывает данные изображения из sRGB (произведенный декодером) к цветовому пространству, используемому в целевом изображении.

Качество

5028259 Установок целевого типа изображения для изображений jpeg увеличивают размер файла результата:

Если параметр записи с целевым типом использовался явно, чтобы записать изображение jpeg, то размер файла результата был больше, чем если бы тот же самый целевой тип использовался неявно. Проблема была показана, когда целевой тип был определен, но соответствующий объект метаданных не был определен. Фиксация создает объект метаданных использование данного целевого типа, чтобы создать объект маркера SOF, который будет использоваться, чтобы изменить значения по умолчанию QtableSelectors.

4881314 ImageIO правильно не читает определенный стандарт файлы JPG:

ImageIO неправильно чтения некоторые файлы JPG. Результатом было красное или зеленое изображение, которое было похоже на фотографическое отрицание. Фиксация устраняет преобразование цветового пространства для изображений EXIF. Чтобы обнаружить изображения EXIF, проверка на маркер APP1 в заголовке изображения добавляется.

5098176 Некоторые изображения PNG не в состоянии загрузиться с ImageIO класс:

PNGImageReader отказавший, чтобы создать ImageTypeSpecifier экземпляр, соответствующий индексированному PNG, отображает если длина палитры изображения в меньшем чем 2 битовых глубины. Чтобы избежать этого ограничения, новые массивы палитры соответствующего питания 2 размеров создавались. Эти массивы дополняются последним значением от исходных массивов, чтобы избежать появления цветов, которые не существуют в исходной палитре.

6372769 ImageIO.read метод ненадлежащим образом декодирует Никона Йпегса:

ImageIO читатель jpeg выполняемое дополнительное цветное преобразование, если изображение, содержавшее встроенный цветной профиль. Ошибка была исправлена, удаляя дополнительную цветную работу преобразования.

Разное

4972087 Quality Desc и Quality Values массивы имеют ту же самую длину для JPG:

JPEGImageWriteParam класс был обновлен так, чтобы getCompressionQualityValues() метод возвращает массив, длина которого является одним большим чем массив, возвращенный getCompressionQualityDescriptions(), согласно спецификации.

6195593 РЕГРЕССА: javax/imageio/IRPTest.java сбои файла:

Проблема была вызвана фиксацией для ошибки 5039494. Запускаясь с этой фиксации, ImageReader.computeRegion() метод использовался, чтобы вычислить целевую область. Чтобы избежать несоответствий между расчетным целевым смещением областей и мест назначения от параметра, destinationOffset обновляется согласно расчетным значениям.

6304433 Тестовых ошибки: регрессионный тест на ошибку 6291034 сбоя на всех платформах:

Отказ регрессионного теста был вызван созданием выходного файла образа. Этот файл создавался после подсчета существующих файлов в рабочем каталоге и не был удален на конце регрессионного теста. Так, после выполнения регрессионного теста, рабочий каталог, всегда содержавший один дополнительный файл, хотя все временные файлы были удалены на выход VM. Решение состоит в том, чтобы использовать ввод байтового массива или потоки вывода вместо ввода файла или потоки вывода, чтобы избежать создавать дополнительные файлы в рабочем каталоге.

6356926 ЯМ: регрессионный тест javax/imageio/stream/DeleteOnExit.sh перестал работать:

Проблема была вызвана фиксацией для ошибки 6299405. Код, на который влияют, фиксируется, и соответствующий комментарий был добавлен.

6459309 NoAPP0Test.java регрессионный тест перестал работать на всех платформах:

Различие в пиксельных значениях вызывается при использовании новой версии профиля sRGB, который был обновлен как часть фиксации для 6279846. Новый профиль был интегрирован в сборке b92.

6363748 close() метод FileCacheImageInputStream сбои класса:

Проблема была вызвана фиксацией для ошибки 6299405. Как часть той фиксации FileCacheImageInputStream.close() метод был изменен так, чтобы он обнулял свою ссылку на объект кэша. Устранить эту проблему FCIIS.read() метод обновляется, чтобы вызвать checkClosed() метод, поскольку это, как предполагается, делает.

 


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами