2009-07-26 14 views
1

我有一個iPhone應用程序,可以從互聯網下載圖像並保存以供稍後顯示。將普通PNG轉換爲iPhone優化格式

用戶可以從UITableView中選擇要查看的圖像,表格視圖具有自定義單元格,可顯示不同尺寸的原始圖像的縮略圖。

當大圖像首先下載它縮小到縮略圖大小和縮略圖使用UIImagePNGRepresentation保存。

我想要做的是將縮略圖保存爲優化的iPhone PNG格式。我怎樣才能做到這一點?它會不可思議地發生,只需將原始大圖加載到內存中並保存即可?在保存之前,我是否必須在縮略圖上進一步處理?

+0

好問題。我知道XCode在將png複製到應用程序時會執行此操作,但不知道如何動態執行此操作。 – 2009-07-26 13:23:32

+0

使用UIImagePNGRepresentation保存圖像時,是否最有可能自動使用優化的PNG格式? – Amagrammer 2009-07-26 14:00:04

回答

2

很可能UIImagePNGRepresentation不會創建圖像,因爲它們是非標準PNG,並且不能被其他任何東西讀取。如果他們的API生成無法讀取的PNG,我認爲它會記錄該文件,並且任何通過電話上傳PNG的人都會注意到它們不起作用。

優化是有用的,但最優化的PNG圖像是在優化作爲構建過程的一部分做了UI的一部分。執行優化的成本可能會抵消您從中獲得的收益。

0

因此,事實證明,優化格式中使用的RGB565色彩空間在CGGraphicsContext中是不可用的,CGGraphicsContext是所有UI使用的渲染類,無論什麼組件。

所以,如果我寫一些代碼在保存前改變圖像的色彩空間,我不能讓紋理回一個UI類。使用它的唯一方法是直接將其加載到OpenGL內部,並在我的應用程序中使用OpenGL。

0

不要擔心「優化的PNG」格式,因爲它沒有任何顯着差異。

It does not affect rendering speed at all,加載速度爲dictated by file size more than file format

因此,只需將它保存爲一個格式,它會給你最小的文件。如果你不使用透明度,那麼它可能是JPEG。

如果您需要透明度,並且可以在保存圖像時花費更多的CPU時間,那麼在程序中包含pngquant(它處於類似BSD的許可證下)並將這些PNG縮小爲8位調色板。