2016-06-18 13 views
0

Also versuche ich ein bestimmtes PNG-Bild für meine Karte Annotation zu verwenden. Das Originalbild ist 761 x 761 und das Bild in der Größe angepasst, das in meiner App angezeigt wird, ist alles verschwommen und niedrigauflösend. Irgendeine Idee warum das ist?Das Bild wird verkleinert verkleinert

 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 

Vielen Dank!

Antwort

0

diesen Code für Resize Bild Versuchen

Die höchsten Level-APIs für die Skalierung von Bildern finden Sie im UIKit Rahmen zu finden. Bei einer UIImage kann ein temporärer Grafikkontext verwendet werden, um eine skalierte Version zu machen, UIGraphicsBeginImageContextWithOptions mit() und 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() erzeugt einen temporären Wiedergabe-Kontext, in denen die ursprünglichen gezogen wird. Das erste Argument, die Größe, ist die Zielgröße des skalierten Bildes. Das zweite Argument isOpaque wird verwendet, um zu bestimmen, ob ein Alpha-Kanal gerendert wird. Wenn für Bilder ohne Transparenz (d. H. Einen Alphakanal) dies auf false gesetzt wird, kann dies zu einem Bild mit einem rosa Farbton führen. Die dritte Argumentskala ist der Anzeigeskalierungsfaktor. Bei 0.0 wird der Skalierungsfaktor des Hauptbildschirms verwendet, der für Retina-Displays 2.0 oder höher ist (3.0 beim iPhone 6 Plus).

Verwandte Themen