2013-01-22 18 views
1

是否可以使用MonoTouch從CoreGraphics加載圖片資源?在MonoTouch中加載CoreGraphics的圖片資源

如果是這樣,怎麼樣?

我在MonoTouch框架中找不到任何可以讓我這樣做的東西。

僅供參考,我正在尋找CoreGraphics而不是CoreImage。我希望我的應用能夠與iOS4 +兼容,所以任何想到這一點的方法都是可以接受的。

僅供參考,我已經有了我需要的資產對象。我只需要把它變成用戶可以在屏幕上看到的東西。

+0

「加載CoreGraphics的資產」是什麼意思?什麼樣的資產?來自哪裏? – 2013-01-22 18:06:57

+0

存儲在已保存的照片媒體文件夾中的圖像,我已經擁有資源網址。 – user1060500

+0

@userXXX http://developer.apple.com/library/ios/#documentation/AssetsLibrary/Reference/ALAssetsLibrary_Class/Reference/Reference.html – 2013-01-22 18:11:35

回答

1

以下是如何使用CGDataProvider將.PNG加載到CGImage中,然後從中初始化UIImage(類似於您之前關於CoreImage的問題)。

string file = Path.Combine (NSBundle.MainBundle.ResourcePath, "image.png"); 
using (var dp = new CGDataProvider (file)) 
using (var img = CGImage.FromPNG (dp, null, false, CGColorRenderingIntent.Default)) 
using (var ui = new UIImage (img, 1.0f, UIImageOrientation.Up)) { 
    Assert.IsNotNull (ui.CGImage, "CGImage"); 
} 

,如果你有JPEG圖像,您可以使用FromJPEG方法(或根據您的URL文件擴展名自動調整)。

+0

這將從資源加載文件。我需要從資源網址加載。 – user1060500

+0

錯誤,它會從URL加載圖像。該URL是從MainBundle的資源位置構建的 - 但CGDataProvider **不知道這一點(例如,它可能來自整個星球上的Web服務器,而不是來自設備本身)。 – poupou

+0

所以,你說要使用像這樣的資產URL並使用你的代碼的其餘部分,它應該工作? string file =(「assets-library://asset/asset.JPG?id = CF72ABDE-76CE-4411-AB7D-587B3540A140&ext = JPG」); 使用(var dp = new CGDataProvider(file)) - 這對我不起作用。在創建CGDataProvider時,我得到一個ArgumentException。 :( – user1060500