2017-06-20 38 views
0

我一直在使用the code from here添加一些文字到我的UIImage,但圖像質量變得非常糟糕。我已經縮減了很多代碼,至此:UIImage iOS中的質量差Xamarin

public UIImage EditImage(UIImage myImage) 
    { 
     using (CGBitmapContext ctx = new CGBitmapContext(IntPtr.Zero, 75, 75, 8, 4 * 75, CGColorSpace.CreateDeviceRGB(), CGImageAlphaInfo.PremultipliedFirst)) 
     { 
      ctx.DrawImage(new CGRect(0, 0, 75, 75), myImage.CGImage); 
      return UIImage.FromImage(ctx.ToImage()); 
     } 
    } 

MyImage是一個PNG圖像。我加入了他們這樣的:

我不太確定它們中的哪一個被使用,但是當我在運行時檢查圖像時,尺寸是75x75 nint(native int)。這就是爲什麼我設置CGBitmapContext的高度和寬度爲75.

我的問題是,通過此功能處理myImage後,質量變得非常差。如果我跳過這個過程,只使用myImage,質量非常好,但是我需要CGBitmapContext來爲圖像添加一些文本。

有沒有人有任何想法是什麼原因導致它質量差,我怎麼能解決它?爲了記錄,我正在測試iPhone 6S。

回答

0

您有多種誤解。

讓我們從圖像大小開始。如果您的基本圖像是100x100,@ 2x版本應該是200x200,因爲它是分辨率的兩倍。遵循這個模式,你的@ 3x應該是300x300。操作系統將根據設備的功能選擇正確的操作系統。對於6S,它應該是@ 2x取決於你如何加載圖像。

讓我們繼續您創建CGBitmapContext的方式。代碼的來源正好包含您需要的內容,但是您已將其更改爲修復值,現在想知道爲什麼您的圖像是75x75。質量不好是正確的,因爲系統現在正在調整原始圖像的大小。

+0

感謝您的回答。 我看到我可能在圖像大小上犯了一個錯誤,但是這與我的情況有關嗎?我的應用程序是否正在讀取我的100x100圖像,因此預計會出現200x200的圖像,或者在設備使用原始(@ 1x)時,我的@ 2x圖像是否會在屏幕上看起來更小?另外,只要我調整大小,質量不應該像我的代碼那樣糟糕。我找到了一個我忘記發佈的解決方法,即使調整大小,圖像現在也顯着更好。 – mathkid91