我正在構建自定義圖像鍵盤,並且無法正確調整圖像大小。我嘗試了一堆不同的方法,但沒有成功。問題是,圖像要麼比我想要的要大,要麼將其調整到我的預期尺寸的一半,然後比原來的圖像更模糊。在下面的示例中,我試圖將圖像的大小調整爲與屏幕上顯示的大小相同(請參閱底部的屏幕截圖)。這裏是我的調用調整大小代碼:UIImage縮小規模 - 分辨率損失
println("Starting Size is \(image!.size)")
println("New Size is: \(sender.frame.size))")
println("Initial Scale: \(image!.scale)")
image = imageResize(image!, size: CGSize(width: sender.frame.width, height: sender.frame.height))
println("Final Size is \(image!.size)")
println("Final Scale: \(image!.scale)")
這裏是控制檯輸出上面打印語句:
Starting Size is (750.0, 750.0)
New Size is: (78.0, 78.0))
Initial Scale: 1.0
Final Size is (78.0, 78.0)
Final Scale: 2.0
這裏是imageResize
功能
func imageResize(image:UIImage, size:CGSize)-> UIImage {
UIGraphicsBeginImageContextWithOptions(size, false, 0)
var context = UIGraphicsGetCurrentContext()
CGContextSetInterpolationQuality(context, kCGInterpolationHigh)
image.drawInRect(CGRect(origin: CGPointZero, size: size))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return scaledImage
}
最後,這裏是屏幕截圖:
更新:
爲了澄清,在屏幕截圖的底部的圖像是從鍵盤。這是一個UIButton,其中放置了全尺寸(750x750)的圖像。當我將圖像複製到粘貼板時,我首先使用全尺寸圖像並將其縮小至與鍵盤中UIButton的框架相匹配。所以我試圖讓文字信息中的圖像尺寸相同,並且在鍵盤上具有相同的圖像清晰度。
更新#2
我更新了我的圖片大小的功能調整圖像大小取決於屏幕比例:
func imageResize(image:UIImage, size:CGSize)-> UIImage {
let scale = UIScreen.mainScreen().scale
let newSize = CGSize(width: size.width/scale, height: size.height/scale)
UIGraphicsBeginImageContextWithOptions(newSize, false, scale)
var context = UIGraphicsGetCurrentContext()
CGContextSetInterpolationQuality(context, kCGInterpolationHigh)
image.drawInRect(CGRect(origin: CGPointZero, size: newSize))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return scaledImage
}
這裏是控制檯輸出將有關圖像的一些細節:
Starting Size is (750.0, 750.0)
New Size is: (78.0, 78.0))
Initial Scale: 1.0
Final Size is (39.0, 39.0)
Final Scale: 2.0
最後,這裏是設備上的圖像(iPhone 6):
正如你可以看到,儘管圖像具有適當的框架,它出現在鍵盤相比,UIButton的模糊。我應該能夠達到與UIButton相同的分辨率,因爲在這兩種情況下我都是從全尺寸圖像開始的。任何想法,爲什麼我失去了解決辦法?
更新#3
我更新了我的代碼由規模乘以圖像,而不是由它劃分。
let newSize = CGSize(width: size.width * scale, height: size.height * scale)
下面是結果:
Starting Size is (750.0, 750.0)
New Size is: (78.0, 78.0))
Initial Scale: 1.0
Final Size is (156.0, 156.0)
Final Scale: 2.0
我真的很感謝你的幫助,但我不還是不理解怎麼拉這一切在一起,以得到適當大小的照片。爲了完全闡明我的目標,我試圖使複製到消息中的圖像與鍵盤中的UIButton中的圖像完全相同。以下是我用於將圖像添加到粘貼板以將其複製到消息文本中的代碼。在圖像大小調整後運行粘貼板代碼:
pb.setData(UIImagePNGRepresentation(image), forPasteboardType: type)
什麼是模糊的一部分嗎?屏幕截圖中的較小圖像實際上是_sharper_! – matt
如果您在此縮放圖像的像素較少,那麼它不會太尖銳。縮小至50x50像素的100x100像素圖像將具有1/4的像素數量。很明顯你在問什麼。 – zaph
說:「如果我把它調整到我想要的大小的一半,那麼它會更模糊」爲什麼調整大小到預定大小的1/2。 – zaph