簡體   English   中英

10.7.4和libPNG

[英]10.7.4 and libPNG

自從我更新到10.7.4版以來,我的NSImage代碼開始出現問題。 當我讀出圖像的表示形式時,請選擇“位圖”圖像表示形式,然后嘗試將其寫出到PNG文件中,但會收到錯誤消息。

因此,我嘗試通過“常規”方式進行操作,但出現以下錯誤:

在此處輸入圖片說明

我的第一個猜測是刪除損壞的libPNG版本,並用一個可用的版本替換它。 關於如何解決這個問題有什么建議嗎? 我可以嘗試編譯舊版本的libPNG並讀出位圖圖像,然后自己寫出來。 非常喜歡OSX的質量如何降低到Lion中的Windows Vista水平。

是的,OSX使用libPNG: http ://d.pr/i/nOEX

為了更清楚一點,這是我的測試構建代碼:

NSImage *image = [[NSImage alloc] initWithContentsOfFile:@"/Users/jabwd/Desktop/Icons/4099.ico"];

    NSLog(@"%@",[image representations]);
    NSImageRep *biggest = nil;
    for(NSImageRep *rep in [image representations])
    {
        if( ! biggest )
        {
            biggest = rep;
        }
        else if( [rep size].width >= [biggest size].width && [rep size].height >= [biggest size].height )
        {
            biggest = rep;
        }
    }

    if( biggest && [biggest isKindOfClass:[NSBitmapImageRep class]] )
    {
        NSBitmapImageRep *bitmap = (NSBitmapImageRep *)biggest;
        NSData *data = [bitmap representationUsingType:NSPNGFileType properties:nil];
        [data writeToFile:@"/Users/jabwd/Desktop/test.png" atomically:false];
    }

如您所見,我假設圖像中有多種表示形式。 我可以在這種情況下執行此操作,因為我正在加載某種類型的圖標,這是一個私人項目,不會被某些用戶使用=>對於我擁有的另一個更大的應用程序,它有一項特定的任務自動化。

看起來ImageIO.framework在10.7.4中有一些錯誤,與在10.7.3中找到的libPNG版本相同。 在將圖像轉換為png之前,使用自動腳本將圖像轉換為jpeg似乎可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM