Файл Ifl чем открыть

Обновлено: 22.06.2024

Db2 Analytics Accelerator on Z — это приложение-контейнер для IBM Secure Service Container (SSC). SSC — это специальный логический раздел (LPAR), который может находиться в том же центральном вычислительном комплексе (CPC), что и подсистема Db2 for z/OS, или в другом CPC. Одним из основных преимуществ IBM Db2 Analytics Accelerator on Z по сравнению с IIAS является IFL, память и хранилище можно масштабировать независимо. Это преимущество конфигурации обеспечивает лучшую масштабируемость и динамическое выделение ресурсов по мере необходимости.

Db2 Analytics Accelerator на Z основан на Db2 Warehouse, новом механизме ускорения для Db2 Analytics Accelerator Версии 7. Несколько преимуществ этой новой технологии — это хранилище столбцов в памяти, которое использует динамическое перемещение данных с диска в память, чтобы даже рабочие нагрузки, объем которых превышает реальный объем памяти, могут быть полезны благодаря функциям сжатия данных, предоставляемым механизмом Db2 Warehouse.

В этой технической заметке основное внимание уделяется мониторингу IFL, памяти и хранилища в Db2 Analytics Accelerator on Z, и если есть необходимость изменить конфигурацию, для этого предоставляются баллы

Контент

Загрузка ЦП в Db2 Analytics Accelerator часто противоречит здравому смыслу для "стандартных пользователей Z". Приоритетом разработки Db2 Warehouse является максимально быстрая обработка запроса и использование всех доступных ресурсов. Одиночный (сложный) запрос может использовать почти 100% пользовательского ЦП, если все в порядке. Это отличается, например, от Db2 for z/OS и других рабочих нагрузок z/OS, которые оптимизированы для высокопараллельных рабочих нагрузок и где загрузка ЦП является индикатором загрузки системы.

Вот пример такой рабочей нагрузки. Как видно, есть периоды с (почти) полной загрузкой ЦП, периоды только с «фоновой активностью» и некоторые «всплески», которые, вероятно, являются кратковременными запросами. Уровень использования 50% является средним из-за периода захвата 30 секунд. Таким образом, загрузка ЦП в целом не может быть хорошим индикатором загрузки системы.

image 8452

Предполагается, что мощность ЦП должна основываться на том, как ускоритель Db2 Analytics выполняет соглашения об уровне обслуживания. Например, если запросы обычно завершаются за 10 секунд, а SLA требует 20 секунд, вы можете уменьшить количество IFL. Но реальность сложнее — вам также придется учитывать операции загрузки и добавочного обновления. Часто задания загрузки должны умещаться в пакетном окне, а добавочное обновление должно выполняться с меньшей задержкой.

Другими словами: рекомендуется не отслеживать физические ресурсы, а отслеживать «единицы работы» и сравнивать их с соглашениями об уровне обслуживания.

Analytics Accelerator Studio может отображать последние запросы, которые были ускорены, в разделе «Мониторинг запросов» представления Accelerator: в столбце «Время ЦП» показано количество секунд, затраченных ресурсом IFL для SQL-запроса.

image 8454

Та же информация доступна с помощью хранимой процедуры SYSPROC.ACCEL_GET_QUERIES, поставляемой с продуктом. Для получения дополнительной информации см.:

Другой областью для мониторинга загрузки ЦП является раздел "Мониторинг" в Студии данных.

image 8457

Q8STCCPU: Текущая средняя загрузка ЦП на узлах-координаторах акселератора

Q8STWCPU: Текущая средняя загрузка ЦП на рабочих узлах ускорителя

Для одноузловой или многоузловой реализации Db2 Analytics Accelerator на Z счетчики Q8STCCPU и Q8STWCPU показывают одно и то же значение, которое представляет собой использование ЦП в процентах.

В целом можно использовать общие IFL, но даже если вы определите 2x IFL, Db2 Warehouse все равно попытается использовать все. Но из-за совместного использования будет наблюдаться «украденное время», то есть ресурсы ЦП, назначенные другим LPAR, в то время как Db2 Analytics Accelerator будет находиться в рабочем состоянии. Однако это не указывает на фактическую потребность ЦП в Db2 Analytics Accelerator

Db2 Analytics Accelerator работает в SSC LPAR, использующих IFL. Таким образом, если в Z LPAR имеется несколько Db2 Analytics Accelerator или Linux, ресурсы IFL могут совместно использоваться этими LPAR.

Большинство пользователей z/OS отслеживают LPAR на предмет использования ЦП и памяти. Как правило, они делают это для управления мощностями и планирования. Те же физические измерения для Db2 Analytics Accelerator не подходят для этой цели. Есть случаи, в которых возможны некоторые суждения о емкости.

Если количество IFL или объем памяти необходимо изменить (добавить или удалить), рекомендуется всегда изменять количество IFL в профиле активации из консоли аппаратного обеспечения (HMC) и выполнять повторная активация. Причина в том, что работающее хранилище Db2 не узнает об изменении IFL без перезапуска. Таким образом, добавление IFL в онлайн-режиме может привести к снижению производительности без перезапуска.

Мониторинг памяти

Способ работы Db2 Warehouse заключается в том, что он увеличивает свои области памяти до заданных пределов. В большинстве случаев память операционной системе не возвращается, то есть максимальная отметка остается на месте.

Фактическое использование памяти также не является хорошим показателем. По замыслу использование большинства областей памяти Db2 Warehouse при необходимости увеличивается до разрешенного максимума, но неиспользуемые области не освобождаются снова. После некоторого времени работы использование памяти будет на уровне 80-90% и останется на этом уровне с небольшими колебаниями (синяя линия). Linux будет использовать оставшуюся память для своего буферного кеша. Таким образом, объем используемой памяти всегда равен 100 % (светло-зеленая линия).

image 8458

Например, если 60 % использования памяти никогда не превышались, то, скорее всего, память выделена с избытком (ожидается использование 80–100 %). Но это не работает наоборот, то есть вывод о том, что 90%+ использование памяти большую часть времени не обязательно указывает на нехватку памяти.

Коэффициент попаданий в буферный пул и переполнение сортировки используются в качестве индикаторов требований к памяти. Команда -DISPLAY ACCEL отображает информацию о серверах-ускорителях. Кроме того, есть два счетчика памяти

Суммарная память, доступная для пользовательских данных (Q8STTMUD) показывает один буферный пул хранилища Db2 для всех подключенных подсистем Db2. Это не физическая память ускорителя, а память, сконфигурированная для пулов буферов на всех рабочих узлах. Размер буферного пула определяется при первом запуске кластера. Таким образом, после увеличения объема памяти на HMC необходимо перезапустить и повторно выделить буферный пул. Если память в LPAR увеличена, память экземпляра и размеры буферного пула корректируются при перезапуске контейнера Docker.

image 8459

Суммарная память, доступная для обработки SQL ( Q8STTMPS ) показывает доступную память для обработки операторов SQL в ускорителе.

image 8460

Есть также два других счетчика, которые можно найти в трассировке статистики SMF.

Коэффициент попаданий в буферный пул %‘(Q8STABHR) дает важную общую меру того, насколько эффективно система использует память, чтобы избежать сбоя дискового ввода-вывода. Хорошими считаются значения более 95%. Более низкие значения в течение более длительного периода для данной рабочей нагрузки могут указывать на то, что объем памяти ускорителя слишком мал для выполнения рабочей нагрузки с оптимальной производительностью и его необходимо увеличить. В общем, лучший способ узнать, достаточно ли памяти для рабочей нагрузки, — это отслеживать коэффициент попаданий в буфер. При «нормальной работе» это соотношение должно быть больше 95 % — ведь хорошо иметь обработку в памяти. Время от времени он может сбрасываться, например, при изменении рабочей нагрузки, требующем нового рабочего набора. Например, если есть интерактивное использование в дневное время и пакетная отчетность в ночное время.

Переполнение сортировки (Q8STOFLW) — это количество переполнений сортировки в ускорителе. Переполнение сортировки означает, что операторы SQL не могут быть полностью обработаны в памяти. Результаты «переливаются» во временную системную таблицу, и для этого может потребоваться доступ к диску. Многие переполнения при сортировке, происходящие в течение более длительного периода времени, могут указывать на то, что памяти ускорителя слишком мало для выполнения рабочей нагрузки с оптимальной производительностью. Если системное временное табличное пространство часто используется, это не обязательно указывает на проблему. Однако для повышения производительности аналитических рабочих нагрузок с очень высоким спросом на память крайне важно использовать быстрое хранилище. С этой целью убедитесь, что устройства-псевдонимы определены для устройств хранения FICON и что быстрые флэш-накопители используются для пула данных ускорителя, когда это возможно.

Мониторинг хранилища

Для Db2 Analytics Accelerator на Z должно быть предоставлено внешнее хранилище. Хранилище требуется для хранения образа устройства акселератора и базы данных акселератора, включая пользовательские данные, которые состоят из таблиц, загруженных или заархивированных в акселератор или создаются как таблицы только для ускорителей.Кроме того, требуется хранилище для временных данных среды выполнения ускорителя. Ускоритель может использовать хранилище FICON или хранилище, подключенное к FCP. Особых требований к системам хранения нет. Ускорителю требуется несколько «пулов» хранения для среды выполнения (>80 ГБ), для работы (>40 ГБ) и для данных (размер зависит от пользовательских данных). Кроме того, можно использовать другую систему хранения или тип хранилища.

Для Db2 Anayltics Accelerator на Z есть 3 области для мониторинга пространства

<р>1. Раздел «Используемое пространство» в Студии данных. Это страницы на уровне табличного пространства, используемые Db2 Warehouse.

image 8461

<р>3. Используемое дисковое пространство. В Linux это определяется командой 'df' на уровне файловой системы для тома /data, который включает свободные страницы в табличном пространстве, которые в данный момент не используются.

image 8462

image 8466

Q8STDSKA : общая емкость диска (для пользовательских данных) в МБ

Q8STDSKB : Дисковое пространство (в МБ) для данных, связанных с этой подсистемой Db2. Это значение можно связать с Q8STDSKA, чтобы определить, сколько места на диске было использовано.

Вы можете добавить хранилище без простоя ускорителя. После того, как вы подготовите тома, необходимо изменить файл конфигурации JSON, и по следующей ссылке приведены подробные сведения о том, как его изменить. Ускоритель продолжает работать. Если вы добавили хранилище в свой файл конфигурации, соответствующий диск будет отформатирован.

В этой главе описывается, как использовать IL для чтения и записи данных изображения. IL использует библиотеку форматов изображений (IFL) для выполнения всего ввода и вывода изображений (I/O). IFL обеспечивает абстракцию низкоуровневого ввода-вывода изображений, которая позволяет пользователям писать приложения, не обращаясь к IL или деталям используемых форматов файлов изображений. Даже не обязательно знать, какой формат файла изображения используется (хотя IFL предоставляет средства для определения формата изображения и доступа к специальным функциям, которые не являются частью абстракции ввода-вывода изображений IFL).

IL обеспечивает доступ к изображениям с помощью класса ilFileImg. Его объекты могут быть частью цепочек изображений. Этот класс кэширует данные изображения, чтобы уменьшить количество операций ввода-вывода изображения. IL часто обеспечивает более гибкий доступ к данным изображения, чем IFL, поскольку IFL фокусируется на простой абстракции ввода-вывода. Например, некоторые форматы изображений не поддерживают разбиение по страницам. При использовании IFL для доступа к изображению, хранящемуся в таком формате, приложение вынуждено считывать изображение целиком, а затем извлекать интересующие его части. IL может обеспечить эту функциональность намного проще, используя свои обширные средства доступа к изображениям.

В оставшейся части этой главы описывается, как использовать IL для доступа к данным изображения. Хотя часто упоминается IFL, основное внимание уделяется использованию класса ilFileImg для чтения и записи данных изображения. Чтобы узнать больше об использовании IFL для прямого доступа к данным изображения, см. страницу руководства IFL (3).

Эта глава состоит из следующих основных разделов:

В разделе «Поддерживаемые форматы файлов изображений IFL» описаны форматы файлов изображений, поддерживаемые IFL.

В разделе «Использование IL для доступа к изображению» рассказывается, как получить доступ к данным в файловых форматах.

В разделе «Импорт и экспорт данных изображений» обсуждается, как импортировать и экспортировать данные изображений между IL и другими библиотеками или устройствами.

Поддерживаемые форматы файлов изображений IFL

IL обеспечивает доступ к изображениям, хранящимся в различных форматах, с помощью IFL. В Таблице 1-1 показаны все форматы файлов изображений, поддерживаемые IFL, и их обычные суффиксы. Исходные коды многих модулей форматов файлов, поддерживаемых IFL, находятся в /usr/share/src/ifl/.

Любой формат файла изображения, доступный с помощью IFL, также доступен с помощью IL.

IFL можно расширить для поддержки новых форматов файлов изображений. Дополнительные сведения о добавлении нового формата файла изображения см. в Приложении E, «Реализация собственного формата файла изображения».

В следующих разделах описываются форматы файлов, которые в настоящее время поддерживаются библиотекой форматов изображений и, соответственно, библиотекой ImageVision.

Формат файла FIT — это простой мозаичный формат, разработанный вместе с IFL. Вы можете использовать FIT в качестве отправной точки для определения собственного формата файла.

FIT поддерживает полную гибкость модели IFL: все типы данных, заказы и размеры страниц. Он использует размер страницы по умолчанию 128 x 128. FIT позволяет зарезервировать место для хранения пользовательских расширений формата файла. FIT — единственный формат, который поддерживает пейджинг в измерении канала. Эта функция полезна для мультиспектральных изображений.

Формат файла GIF используется для чтения файлов изображений, хранящихся в формате файла графических изображений CompuServe (GIF). GIF не поддерживает пейджинг. Он хранит изображения в цветовой палитре, сжатой с использованием алгоритма Лемпеля-Зива и Уэлча [1]. Изображения GIF ограничены использованием данных без знака и системы координат в верхнем левом углу. Чтобы получить дополнительную информацию о спецификациях GIF, свяжитесь с CompuServe, Incorporated, Колумбус, Огайо.

JFIF (JPEG)

JFIF реализует формат файла JPEG с помощью библиотеки JPEG, libjpeg, предоставленной Independent JPEG Group. В дополнение к предоставлению абстракции ввода-вывода изображений IFL вся библиотека JPEG предоставляется как есть для использования программным обеспечением, которое было разработано для использования с libjpeg.

Версия 6, 2 августа 1995 г., библиотеки сжатия Independent JPEG Group, libjpeg, и ее стандартные заголовки, jconfig.h, jpeglib.h, jmorecfg.h и jerror.h устанавливаются как часть IFL.

ILTCL

Формат файла ilTCL позволяет сохранять цепочку операторов в файле с использованием языка сценариев на основе TCL. Затем этот файл можно рассматривать как любой другой файл изображения.

Пакет изображений Kodak Photo CD

Формат файла PCD поддерживает файлы изображений, созданные системой Kodak Photo CD™. Photo CD представляет собой систему хранения цифровых фотографических изображений высокого разрешения на компакт-дисках. Система Kodak Photo CD

сканирует фотопленку

обрабатывает отсканированные изображения (цветокоррекция, кодирование цвета, иерархическая декомпозиция и сжатие)

записывает эти изображения в виде серии изображений с цифровым кодированием на диск Kodak Photo CD

В дополнение к цифровым изображениям Kodak Photo CD может создавать цифровые аудиоданные и данные управления воспроизведением. Однако IFL обрабатывает только файлы данных изображения с диска Photo CD.

Образы компакт-дисков с фотографиями

индекс изображения

Файл Image Pac всегда содержит первые четыре разрешения, перечисленные выше. Разрешения 4Base и выше можно не указывать при создании диска Photo CD. Разрешения от Base/64 до Base сохраняются напрямую и могут быть быстро доступны. Разрешения 4Base и выше, если они есть в файле изображения, сохраняются в сжатом виде.

Вы можете использовать функцию-член ilFileImg, getNumImgs(), чтобы определить количество изображений в вашем файле Photo CD. Вы можете использовать функции setCurrentImg() и getCurrentImg() для выбора и запроса текущего разрешения. Если вы используете setCurrentImg() для выбора разрешения изображения, которого нет в пакете изображений, функция возвращает значение ilStatus iflBADPARAMS, но не устанавливает состояние изображения. Разрешение изображения по умолчанию — Base/4.

Размер страницы изображения Photo CD равен полному размеру изображения по x и 16 по y (16 строк на жаргоне Kodak Photo CD).


Примечание. Прилагаемый формат Photo CD не поддерживает записи файлов образов Photo CD.

Цветовая модель Photo CD

Цветовая модель изображения Kodak Photo CD — YCC. Photo YCC — это метрика данных яркости/цветности, основанная на основных цветах видео. Он предназначен для простого отображения видео без ущерба для цветов, доступных на фотоматериалах. Вы можете преобразовать цветовую модель YCC в другую цветовую модель с помощью IL. Однако вы не можете использовать IFL для обратного: преобразования из другой цветовой модели в YCC.

Обзор компакт-диска Kodak Photo

Каждый компакт-диск Kodak Photo CD содержит файл в формате Kodak Photo CD Overview Pac. Этот формат содержит изображение с низким разрешением для каждого изображения на компакт-диске Photo. Класс ilPCDOImg позволяет получить каждое из обзорных изображений с разрешением Base/16 или Base/64 (по умолчанию — Base/16).

Вы можете использовать функцию-член ilFileImg, getNumImgs() , чтобы определить количество изображений в файле обзора Photo CD. Вы можете использовать функции setCurrentImg() и getCurrentImg() для выбора и запроса текущего разрешения. Если вы используете setCurrentImg() для выбора разрешения изображения, которого нет в обзорном пакете, функция возвращает значение ilStatus iflBADPARAMS, но не устанавливает статус изображения.


Примечание. Формат Photo CD Overview поставляется с IFL не может записывать файлы образов Photo CD.

PNG реализует формат файла PNG с использованием библиотеки Portable Network Graphics версии 0.88, libpng, и версии 1.0 библиотеки сжатия ZIP deflate/inflate, libzlib.Эти библиотеки и их стандартные заголовки, png.h, pngconf.h, zlib.h и zconf.h, устанавливаются как часть IFL.

PPM/PGM/PBM

PPM, PGM и PBM реализуют форматы файлов PPM, PGM и PBM, используя выпуск 7, декабрь 1993 г., библиотек NETPBM, libppm, libpgm и libpbm. Эти библиотеки и их стандартные заголовки, ppm.h, pgm.h и pbm.h, устанавливаются как часть IFL.

Формат файла изображения iflRaw обеспечивает доступ к необработанным данным изображения, хранящимся в файле. Данные должны быть организованы в растровом виде. Если данные представлены на страницах, страницы должны быть фиксированного размера (с частичными страницами по краям изображения, дополненными для заполнения фиксированного размера).

Формат iflRaw поддерживает всю гибкость модели IFL: поддерживаются все типы данных, цветовые модели, порядок, ориентация и размеры страницы. Как и для всех форматов файлов, поддерживаемых IFL, для доступа к необработанным изображениям используется универсальный объектный класс (или объект ilFileImg для пользователей IL).

Расширение по умолчанию для файлов изображений в формате ilRaw: .raw.

SGI — это первый формат, определенный Silicon Graphics для хранения данных изображений. Файлы SGI обычно хранятся в файлах с суффиксами .bw, .rgb, .rgba, .sgi или .экран. Файлы SGI поддерживают полноцветные, цветовую палитру и монохромные изображения с одним или двумя байтами на компонент цвета. Данные изображения могут храниться либо в необработанном виде, либо в сжатом виде с кодированием длин серий (RLE). Вы можете создавать файлы SGI со сжатием RLE, но позже вы не сможете перезаписать часть сжатого файла SGI.


Примечание. Если изображение в формате SGI имеет формат RGB Палитра, соответствующая ей карта цветов, должна храниться в отдельном (также в формате SGI) файле с именем imgName.map, где imgName имя образа SGI.

Ширина страницы для файлов SGI равна ширине изображения. Высота страницы — это значение в диапазоне от 16 до 32, которое равномерно делит общую высоту изображения. Формат SGI делает порядок изображений чередующимся. SGI поддерживает только беззнаковые данные и нижнее левое координатное пространство.

Формат файла TIFF, созданный Aldus Corporation, представляет собой расширенную версию формата файла изображения тега, использующую версию 3.4beta24 библиотеки TIFF Сэма Леффлера, libtiff. Эта библиотека реализует версию 6.0 спецификации TIFF. Библиотека и ее стандартные заголовочные файлы tiff.h и tiffio.h устанавливаются как часть IFL

Формат TIFF предназначен для описания и хранения данных растрового изображения. TIFF может описывать двухуровневые, полутоновые, палитры и полноцветные данные изображения в нескольких цветовых пространствах. TIFF включает в себя ряд схем сжатия, которые позволяют вам выбрать наилучший компромисс между пространством или временем для ваших приложений. TIFF также может хранить несколько изображений в файле. IFL использует следующие расширения TIFF 6.0: Tilewidth, Tilelength и SampleFormat. Эти теги обеспечивают необходимую поддержку типов данных изображения и фрагментов, определенных IFL.

Введение к этому Руководству по программированию содержит информацию о том, как получить дополнительную информацию о спецификации TIFF 6.0. См. ifl/iflTIFF.h, чтобы узнать больше о тегах TIFF и спецификации TIFF.

Псевдоним

МЯГКОЕ ИЗОБРАЖЕНИЕ

Формат файла SOFTIMAGE поддерживает чтение всех типов файлов изображений и запись только смешанных RLE-сжатых файлов. В настоящее время нет поддержки файлов буфера глубины или визуализированных субрегионов.


Примечание. Формат файла Wavefront в настоящее время не поддерживается. .

Использование IL для доступа к изображению

IL позволяет читать и записывать данные изображений в любом из форматов файлов, которые поддерживают нужный режим доступа. (Некоторые форматы файлов изображений не поддерживают запись.) IL обеспечивает доступ к файлам изображений с помощью класса ilFileImg. Существующие файлы изображений можно прочитать и создать новые, просто создав объект ilFileImg.

Открытие существующего файла

В следующем примере открывается существующий файл для чтения:

Первым аргументом конструктора является имя открываемого файла изображения. Второй аргумент — это режим доступа к файлу. Режим доступа может быть:

O_RDONLY, чтобы указать, что файл должен быть открыт только для чтения

O_RDWR, если файл доступен для чтения и записи. Помните, что не все форматы файлов изображений позволяют запись. Например, IFL не может записывать изображения в формате Kodak Photo CD.

Конструктор ilFileImg открывает указанный файл.Если указанный файл не существует, у вас нет разрешения на чтение или он имеет неподдерживаемый формат, статус созданного объекта ilFileImg устанавливается на значение, отличное от ilOKAY.

Имя файла, передаваемое конструктору ilFileImg, подвергается стандартному анализу перед тем, как использоваться в качестве имени открываемого файла. Синтаксис имен файлов следующий:

Имя файла – это имя открываемого файла. имя-формата, если указано, указывает конкретный формат файла изображения, который следует использовать для доступа к файлу изображения. Спецификация формата чаще всего используется при создании файла, и формат нельзя отличить от имени файла, используя стандартное расширение имени файла для формата. Индекс изображения, если он указан, указывает индекс изображения в файле с несколькими изображениями для доступа. Индексы изображений начинаются с 0, но не все форматы поддерживают хранение нескольких изображений в одном файле. Строка, зависящая от формата, передается без изменений в модуль файла изображения IFL для интерпретации, зависящей от формата. Эта строка часто используется для кодирования аргументов, используемых при доступе к файлу изображения. Например, формат необработанного изображения использует эту строку для указания параметров, таких как размер и цветовая модель необработанного изображения. IFL предоставляет утилиту для разбора этой строки как последовательности значений с указанием позиции и имени. Однако интерпретация этой строки зависит от индивидуального формата.

Открыв файл изображения, вы можете прочитать данные, как показано в примере 3-1.

Пример 3-1. Открытие файла изображения и чтение данных

В этом примере:

Файл открывается для чтения и создается соответствующий объект ilFileImg. Если файл не открывается, программа завершает работу.

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

Буфер выделен. Функция iflDataSize() возвращает количество байтов, необходимых для типа данных, указанного первым аргументом, умноженное на необязательный второй аргумент. Эта функция объявлена ​​в заголовочном файле il/iflDataSize.h и описана в разделе «Вычисление размера типов данных».

Функция getTile() считывает первую строку данных изображения в буфер.

Создание файла изображения

Чтобы создать новый файл изображения, необходимо указать характеристики данных, например тип данных, и указать, какой формат файла будет использоваться. Конструктор ilFileImg создает новый файл изображения следующим образом:

Этот конструктор создает файл изображения требуемого размера; все остальные атрибуты используют значения по умолчанию. Первый аргумент конструктора ilFileImg указывает имя создаваемого файла. Второй аргумент задает указатель на ilImage для использования в качестве атрибутов изображения по умолчанию. В этом примере используется NULL, что означает, что используются собственные предпочтительные значения по умолчанию для формата файла. Третий аргумент задает указатель на аргумент iflFileConfig, который используется для указания различных атрибутов файла изображения: размер изображения по осям x и y в этом примере.

Вот более подробное использование конструктора ilFileImg, в котором указано гораздо больше параметров изображения. (Все эти атрибуты подробно обсуждаются в разделе «Атрибуты изображения» вместе с константами, задающими определенные значения для этих атрибутов.)

Вы редко указываете все эти параметры. На самом деле вполне вероятно, что такая полная конфигурация будет ошибкой, например, цветовая модель и размер канала должны совпадать друг с другом. Обычно указывается только несколько атрибутов; остальные примут значения по умолчанию:

В этом примере порядок размеров (iflInterleaved, iflSequential или iflSeparate), ориентация, например, iflLowerLeftOrigin, и сжатие по умолчанию могут принимать предпочтительные значения формата: размер z неявно устанавливается равным 1, а размер размер канала соответствует указанной цветовой модели. Для изображения указываются только его размер, тип данных, например, iflUChar, iflFloat, цветовая модель, например, iflRGB, iflRGBPalette, и размер страницы.

Аргумент размера страницы определяет размеры x, y, z и c (канал) страниц, на которых изображение разбито. в том виде, в котором он хранится на диске. Размеры x, y и z указаны в пикселях. Пейджинг в измерении c задается в каналах и полезен для мультиспектральных изображений с большим количеством каналов. Если размер страницы не указан, используется размер страницы по умолчанию для данного формата и размера изображения.

Атрибуты, указанные при создании файла изображения, должны соответствовать атрибутам, поддерживаемым используемым форматом файла, например, файлы TIFF поддерживают любой тип данных, кроме iflDouble, файлы SGI поддерживают только iflUChar и iflUShort, а файлы FIT могут обрабатывать данные любого типа. .См. справочные страницы для различных форматов изображений, поддерживаемых IFL, для получения дополнительной информации о том, что они поддерживают.

После создания файла вы можете записывать в него данные. В приведенном ниже примере предполагается, что ранее был создан файл изображения theImg размера size. Его данные записываются в файл outFile.tif с помощью copyTile().

Настройка сжатия файла

Часто изображения, хранящиеся на диске, сжимаются, чтобы минимизировать их размер. Такие изображения необходимо распаковать, прежде чем вы сможете их прочитать. Существует множество различных алгоритмов сжатия, и каждый формат файла определяет, какие алгоритмы он поддерживает. С точки зрения программиста, когда данные считываются или записываются в программе IL, их сжатие или распаковка выполняются прозрачно.

Атрибут сжатия указывает, какой алгоритм сжатия (если он есть) используется для сжатия данных перед их сохранением на диске. Не следует сжимать файлы, которые будут изменяться в интерактивном режиме. Изменение частей сжатого существующего файла опасно, поскольку объем записанных данных должен быть таким же, как и исходный файл. Как правило, размер изображения файла после его создания является фиксированным.

Чтобы задать алгоритм сжатия файла, необходимо указать алгоритм сжатия при создании файла. Это можно сделать либо путем явного указания алгоритма сжатия в аргументе iflFileConfig, который передается конструктору ilFileImg, либо путем наследования алгоритма сжатия от другого изображения, используемого для атрибутов исходного изображения. Поскольку набор алгоритмов сжатия, поддерживаемых форматами, сильно различается, один из самых простых способов указать, что вы хотите сжать изображение, — это использовать iflCompression(0), который определяет предпочтительное сжатие формата.

Читайте также: