处理颜色格式

重要

建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) ,自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅 打印支持应用设计指南

打印机支持的每个颜色格式都指定为 ColorMode 功能的选项。 通过使用 ColorMode 功能的选项属性,可以描述打印机接受的每种颜色格式。 下表说明了 Unidrv 可以处理的颜色数据格式。

颜色平面数 每像素的位数
in Device (*DevNumOfPlanes) 设备 (*DevBPP)
1 1 (黑白)
1 8
1 24
3 1 (CMY 和 RGB)
4 1 (CMYK)

对于这些格式,Unidrv 可以将 设备无关的位图 (DIB) 数据转换为正确的格式,并将其发送到打印机。 使用 Unidrv.) 中介绍了可对此数据执行的 (半调操作

如果打印机支持上表中未列出的颜色格式,则必须执行以下操作:

IPrintOemUni ImageProcessing 方法必须执行以下操作:

  • 将 DIB 数据转换为打印机的颜色格式。

  • 对数据执行半调运算。

  • 将数据发送到打印后台处理程序。

有关提供 IPrintOemUni ImageProcessing 函数的详细信息,请参阅 自定义颜色格式

呈现高质量图像

对于每种颜色格式,可以指定打印机硬件接受的每像素位数,以及 Unidrv 在创建 DIB 时要使用的每像素位数。 这些值分别使用 *DevBPP 和 *DrvBPP 属性指定。 有时,需要将图像呈现为位图,其每像素位数高于打印机可以处理 (,例如,尝试) 重现高质量照片。 因此,可以指定大于将 *DevBPP 值乘以 *DevNumOfPlanes 值的结果的 *DrvBPP 值。

例如,假设你想要定义一个 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 属性表示 Unidrv 可以呈现然后发送到打印机的四平面、每平面一位 CMYK 格式。 但是,在这种情况下,在打印呈现的图像之前,必须对它执行半调运算。 必须使用微型驱动程序提供的半调