高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1145
Preserving embedded ICC profiles when using QuickTime Graphics Importer/Exporters


Q: ICC プロファイルが埋め込まれているいくつかの画像ファイルを持っています。これらの画像をインポートして操作し、その後さまざまな形式へエクスポートするのに、QuickTime のグラフィックスインポータとグラフィックスエクスポータのルーチンを使っています。しかし、画像をエクスポートすると、ICC プロファイルがなくなることに気が付きました。ICC プロファイルを維持するにはどうすればよいのでしょうか?

A: まず、画像のインポート時に、GraphicsImportGetColorSyncProfile を使って、埋め込みファイルを別に保存する必要があります。その後、エクスポート操作時に、GraphicsExportSetColorSyncProfile 関数を使ってこのプロファイルを画像に埋め込みます。リスト 1 はその方法を示します。




OSErr err;
FSSpec importFile, outputFile;
GraphicsImportComponent importer;
GraphicsExportComponent exporter;
Handle profHandle = NULL;
unsigned long actualSizeWritten;

err = GetGraphicsImporterForFile(&importFile, &importer);
if (err == noErr)
{
        /* 埋め込まれているプロファイルを保存する */
    err = GraphicsImportGetColorSyncProfile(importer, &profHandle);
        /* エクスポータを取得し、画像の操作を行う */
    err = OpenADefaultComponent(GraphicsExporterComponentType,
                                        kQTFileTypeTIFF, &exporter);
    if (err == noErr)
    {
        err = GraphicsExportSetInputGraphicsImporter(exporter, importer);
        err = GraphicsExportSetDepth (exporter, 24);
              .
              .
              .
        if (profHandle)
        {
            /* エクスポートを行う前に、プロファイルを元に戻す */
            err = GraphicsExportSetColorSyncProfile(exporter, profHandle);
        }
            /* エクスポート操作を行う */
        err = GraphicsExportSetOutputFile(exporter, &outputFile);
        err = GraphicsExportDoExport(exporter, &actualSizeWritten);
    }
    .
    .
    .
    if (profHandle)
    {
        DisposeHandle(profHandle);
    }
}

リスト 1 QuickTime グラフィックスインポータ/エクスポータのルーチン使用時に、文書に埋め込まれた ICC プロファイルを保存する方法を示すコード




[2002 年 9 月 4 日]