2014-11-06 21 views
0

使屏幕捕獲時,請記住真正的照片分辨率我希望做一個基本的照片編輯在我的應用程序,現在我需要能夠在照片中添加文本。原始照片具有> 2000像素的寬度和高度,所以它將被縮放以適應屏幕而不修改其比例。的iOS:與UIGraphicsGetImageFromCurrentImageContext

所以,我把圖像放在一個UIImageView中,將一個Label拖到它上面,然後用UIGraphicsGetImageFromCurrentImageContext將圖像保存在屏幕上。問題是我會得到一個小圖像(320 X一些高度)。

完成此任務的最佳方法是什麼,但不縮小分辨率?

非常感謝!

回答

1

我在應用程序中出現了完全相同的問題。

我意識到的事情是,你不能做一個屏幕捕獲做到這一點。反過來,這意味着將標籤和文本拖到圖像上不能真正完成(它可以與我一起)與UILabels等...

你需要做的是跟蹤所有的事情在數據明智

目前,你有你的UIImageViewframe。這實際上是無關緊要的。它純粹是向用戶展示正在發生的事情。

這是UILabel相同。它也有一個frame。再次,這與最終圖像無關。

你需要做的是它背後的數據存儲在不是絕對意義上,然後將這些值轉換爲幀的顯示設備上。

所以,如果你有一個圖像是3200x4800像素(只是讓我很容易),這會顯示在設備上,並「收縮」到320x480。現在,用戶將具有文字「Hello,world」的框架10, 10, 100, 21放置在特定字體大小的標籤上。

存儲幀10, 10, 100, 21是無用的,因爲您輸出圖像時需要的是... 100, 100, 1000, 210(即大小的十倍)。

因此,在後臺像真的,你應該存儲信息......

frame = 0.031, 0.021, 0.312, 0.044 
// these are all percentages 

現在,你在哪裏標籤應該是百分比值,它應該有多大根據的大小圖片。

因此,對於縮小的圖像尺寸,它將返回10, 10, 100, 21,對於整個圖像尺寸,它將是100, 100, 1000, 210,因此打印輸出時尺寸看起來相同。

您可以創建一個化合物UIView通過具有UIImageView和UILabel的UIView,然後您只需在呈現它之前調整它到全圖像大小。這將是最初接觸它的簡單但天真的方式。

或者你可以創建一個帶有顯示圖像和文字CALayers支持它一個UIView。

或者您可以使用某種繪製方法渲染圖像和文本。

無論哪種方式,你不能只使用屏幕截圖。

是的,這比首次出現時要複雜得多。

+0

非常感謝您記錄良好的答案。首先,我會嘗試第一種方法,即在屏幕上具有真實圖像尺寸的視圖。我希望字體大小在算術級數中,否則將它與縮小比例相乘是行不通的。如果我被卡住了,我會回來補充一些問題。 – Meeshoo 2014-11-06 11:55:41

+0

@Meeshoo無後顧之憂。使用字體大小,我必須創建一個增加字體大小的循環,並計算邊界矩形(NSString函數),直到它變得太大,然後使用以前的大小。 – Fogmeister 2014-11-06 11:56:41

+0

包含真實尺寸圖像的視圖也可以使用UIGraphicsGetImageFromCurrentImageContext呈現? – Meeshoo 2014-11-06 12:06:16

相關問題