2016-06-18 21 views
0

私はマップアノテーションに特定のPNG画像を使用しようとしています。元の画像は761 x 761で、私のアプリに表示されるサイズ変更された注釈画像はすべてぼやけており、解像度が低く見えます。それがどんなアイデアなのか?画像のサイズを変更すると解像度が低くなります

 chargerAnnotationImage = UIImage(named: "ChargerGreen")! 
     let size = CGSize(width: 25, height: 25) 
     UIGraphicsBeginImageContext(size) 
     chargerAnnotationImage.drawInRect(CGRectMake(0, 0, size.width, size.height)) 
     let resizedImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return resizedImage 

ありがとうございます!

答えて

0

は、画像リサイズのための

最高レベルのAPIは、UIKitフレームワーク中に見出すことができるサイズ変更画像に対して、このコードを試してください。 UIImage与えられ、一時的なグラフィックスコンテキストはUIGraphicsBeginImageContextWithOptionsを使用して、スケーリングされたバージョンをレンダリングするために使用することができる()とUIGraphicsGetImageFromCurrentImageContext():

 let image = UIImage(named: "x-men")! 
     let size = CGSizeApplyAffineTransform(image.size, CGAffineTransformMakeScale(0.1, 0.1)) 
     let hasAlpha = false 
     let scale: CGFloat = 0.0 // Automatically use scale factor of main screen 

     UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale) 
     image.drawInRect(CGRect(origin: CGPointZero, size: size)) 

     let scaledImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return scaledImage 

UIGraphicsBeginImageContextWithOptions()は、元のが描画されるに一時的なレンダリングコンテキストを作成します。最初の引数sizeは、スケーリングされたイメージのターゲットサイズです。 2番目の引数isOpaqueは、アルファチャンネルがレンダリングされるかどうかを判断するために使用されます。透過性のない画像(アルファチャンネル)の場合はfalseに設定すると、ピンク色の色合いの画像になります。 3番目の議論スケールは、表示スケールファクタです。 0.0に設定すると、メイン画面の倍率が使用されます。これは、Retinaの表示が2.0以上(iPhone 6 Plusでは3.0)です。