Поделиться через


Обработка форматов цветов

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.

Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.

Каждый формат цвета, поддерживаемый принтером, указывается в качестве параметра функции ColorMode. Используя атрибуты параметров для функции ColorMode, можно описать каждый формат цвета, который принимает принтер. В следующей таблице показаны форматы данных цвета, которые может обрабатывать Unidrv.

Количество цветовых плоскостей Количество битов на пиксель
in Device (*DevNumOfPlanes) in Device (*DevBPP)
1 1 (черный и белый)
1 8
1 24
3 1 (CMY и RGB)
4 1 (CMYK)

Для этих форматов Unidrv может преобразовать данные, независимые от устройства (DIB), в правильный формат и отправить его на принтер. (Операции полутонирования, которые могут выполняться для этих данных, описаны в разделе Полутонирование с Unidrv.)

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

Метод IPrintOemUni ImageProcessing должен выполнять следующие операции:

  • Преобразуйте данные DIB в цветной формат принтера.

  • Выполнение полутонных операций с данными.

  • Отправьте данные в средство spooler печати.

Дополнительные сведения о предоставлении функции IPrintOemUni ImageProcessing см. в разделе "Настраиваемые форматы цветов".

Отрисовка высококачественных изображений

Для каждого формата цвета необходимо указать оба бита на пиксель, которые принимает оборудование принтера, и биты на пиксели, которые требуется использовать Unidrv при создании DIOB-объектов. Эти значения задаются атрибутами *DevBPP и *DrvBPP соответственно. Иногда желательно, чтобы изображения отображались как растровые изображения с большим количеством битов на пиксель, чем принтер может обрабатывать (например, чтобы попытаться воспроизвести высококачественные фотографии). Поэтому можно указать значение *DrvBPP, превышающее результат умножения значения *DevBPP на значение *DevNumOfPlanes.

Например, предположим, что вы хотите определить параметр ColorMode, который приводит к отображению изображений в виде 24 бит/пиксельных растровых изображений, но затем необходимо, чтобы растровое изображение было отправлено на принтер как данные CMYK . Этот режим можно определить следующим образом:

*Feature: ColorMode
{
    *Option: 24toCMYK
    {
        *Name: "Photographic Quality"
        *DrvBPP: 24
        *DevNumOfPlanes: 4
        *DevBPP: 1
        *ColorPlaneOrder: LIST(CYAN, MAGENTA, YELLOW, BLACK)
        *IPCallbackID: 1
    }
 other options
}

В этом примере атрибуты *DevBPP и *DevNumOfPlanes представляют четырехуровневый формат CMYK, который Unidrv может отрисовывать и отправлять на принтер. Однако в этом случае операции полутонирования должны выполняться на отрисованном изображении перед печатью. Необходимо использовать полутонирование мини-накопителей .