为了使应用程序能够支持 RAW 处理,强烈建议编解码器作者实现 IWICDevelopRaw的所有参数。 对于 Windows 7,Windows 映像组件(WIC)需要支持所有 IWICDevelopRaw。 如果文件格式不支持所有这些参数,则应修改图像文件格式。
若要在应用程序中启用基本 RAW 处理,编解码器必须支持对曝光(ExposureCompensationSupport)和颜色(如 KelvinWhitePointSupport 和 TintSupport)的调整。 此外,强烈建议输出到特定颜色空间和像素格式。 当然,鼓励对其他调整的支持,并且 Windows 7 需要支持。
RAW 编解码器必须提供对图像旋转和快速预览的基本支持。 可以通过两种不同的方式指定旋转:
- IWICDevelopRaw::SetRotation 方法。 此方法为后续调用 CopyPixels的输出设置所需的旋转角度。
- IWICBitmapSourceTransform::CopyPixels 方法。 调用方可以设置 dstTransform 选项以指示所需的旋转角度。
这两种方法在以下方面有所不同:
- 只有 IWICDevelopRaw 设置才能跨解码器对象的实例持久保存。
- IWICBitmapSourceTransform::CopyPixels 仅适用于该特定调用;没有任何持久性。
- IWICDevelopRaw 提供更精细的旋转控制。 IWICBitmapSourceTransform::CopyPixels 限制为 90 度的增量。
如果在 IWICDevelopRaw 和 IWICBitmapSourceTransform中指定旋转,则旋转效果是累积的。 例如,如果 IWICDevelopRaw 指定 25 度的旋转,IWICBitmapSourceTransform 指定 90 度的旋转,则会发生以下情况:
- 调用 IWICBitmapFrameDecode::CopyPixels 应应用 25 度旋转(即,仅应用在 IWICDevelopRaw中指定的量)。
- 调用 IWICBitmapSourceTransform::CopyPixels,其 dstTransform 量为 90,然后产生 115 度旋转(25 + 90)。
- 同样,只能保留通过 IWICDevelopRaw::SetRotation 指定的 25 度旋转。
在 Windows Vista 中,IWICBitmapFrameDecode::GetThumbnail 和 IWICBitmapDecoder::GetPreview 方法允许调用方分别获取嵌入的缩略图和预览图像。 这些内容旨在从图像文件流返回预先计算的预览和缩略图。 在 Windows 资源管理器和照片查看器中生成预览或缩略图“即时”会导致性能不佳。 当用户对处理设置进行交互式控制时,编解码器还必须提供一种方法来快速返回更新的屏幕分辨率图像。
调用 IWICDevelopRaw::SetRenderMode 将确定后续调用 IWICBitmapFrameDecode::CopyPixels 返回(有利于速度或质量)。 此外,可以使用 IWICBitmapSourceTransform 接口来确定是否需要向下采样,并且可以在应用时提高性能。 所有图像的颜色保真度应可比。 对处理设置进行更改时,所有这些呈现都应反映这些更改。
相关主题