2016-09-24 1 views
4

다음 코드로 이미지의 크기를 조정할 때 사용되었지만 스케일 인자와 관련하여 잘 작동했습니다. 이제 스위프트 3을 사용하면 스케일 인자가 고려되지 않은 이유를 알 수 없습니다. 이미지의 크기는 조정되지만 배율 인수는 적용되지 않습니다. 왜 그런지 알아?스위프트 : UIGraphicsBeginImageContextWithOptions 스케일 인자가 0으로 설정되었지만 적용되지 않았습니다.

let layer = self.imageview.layer 

UIGraphicsBeginImageContextWithOptions(layer.bounds.size, true, 0) 

layer.render(in: UIGraphicsGetCurrentContext()!) 
let scaledImage = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 

print("SCALED IMAGE SIZE IS \(scaledImage!.size)") 
print(scaledImage!.scale) 

예를 들어 iPhone 5에서 스크린 샷을 찍으면 이미지 크기는 320 * 568이됩니다. 정확히 동일한 코드로 640 * 1136을 사용했습니다. 왜 적용하지 않을 스케일 인자가 발생할 수 있습니까?

이미지 크기를 인쇄 할 때 장치 해상도에 따라 1, 2 또는 3이 인쇄되지만 컨텍스트에서 가져온 이미지에는 적용되지 않습니다.

+0

@LeoDabus 이미 시도했지만이 적용되지 것입니다 같은 (픽셀) 크기 을 반환 . 나는 또한 UIScreen.main.scale을 시도했다. – Sam

+0

@LeoDabus 질문을하기 전에 이미 귀하의 게시물을 확인했습니다. :) 질문은 특정 레이어가 될 수있는 이미지가 아닙니다. 문제는 그래픽 컨텍스트에서 이미지를 가져 오는이 방법은 항상 적절한 배율 인수를 적용 했으므로이를 고려하지 않습니다. 스케일 팩터가 적용되지 않는 이유입니다. – Sam

답변

3

scaledImage!.size 픽셀 단위로 이미지 크기를 반환하지 않습니다.

CGImageGetWidthCGImageGetHeight은 싶어 테스트 그것을 처음에 당신이 import CoreGraphics에있는 경우 image.size * image.scale

이 가
let imageSize = scaledImage!.size //(320,568) 
let imageWidthInPixel = CGImageGetWidth(scaledImage as! CGImage) //640 
let imageHeightInPixel = CGImageGetHeight(scaledImage as! CGImage) //1136 
+0

관련 의견을 보내 주셔서 감사합니다. 사실 이것은 Swift 3에서 변경되었습니다. 이전에 크기 픽셀을 반환하여 혼란스러워했습니다. 고마워요! – Sam

관련 문제