2016-09-24 6 views
4

次のコードで画像のサイズを変更していましたが、スケールファクタに関してはうまく機能しませんでした。 Swift 3ではスケールファクタが考慮されていない理由を理解できません。画像のサイズは変更されますが、倍率は適用されません。なぜなのかご存知ですか?Swift: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ピクセル単位の画像サイズは返されません。あなたたいテストそれアウトした場合image.size * image.scale

ある

CGImageGetWidthCGImageGetHeight(ピクセル)と同じサイズを返します は、最初にあなたはimport CoreGraphics

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

あなたの関連する発言をありがとう。実際、これはSwift 3で変更されました。以前はサイズピクセルを返すため、混乱していました。どうもありがとう! – Sam

関連する問題