2016-10-04 1 views
0

Вот моя цель, у меня есть изображение шириной 750 и я хочу, чтобы масштабировать его до 128 Затем я нашел способ инициализации из UIImage называется init(data:scale:)Confused о инициализации (UIImage в данных: метод масштаба :) в Swift 3.0

следующего мой код

func scaleImage(image:UIImage, ToSpecificWidth targetWidth:Int) -> UIImage{ 
     var scale = Double(targetWidth)/Double(image.size.width) 
     let scaledImage = UIImage(data: UIImagePNGRepresentation(image)! as Data, scale: CGFloat(scale)) 
     return scaledImage! 
} 

print("originImageBeforeWidth: \(portrait?.size.width)") // output: 750 
let newImage = Tools.scaleImage(image: portrait!, ToSpecificWidth: 128) // the scale is about 0.17 
print("newImageWidth: \(newImage.size.width)") // output: 4394.53125 

по-видимому, новая ширина слишком далеко от моей интенции Я ищу 750 * 0,17 = 128 Но я получаю 750/0,17 = 4394

тогда я изменю свое scaleImage FUNC Вот обновленный код

func scaleImage(image:UIImage, ToSpecificWidth targetWidth:Int) -> UIImage{ 
     var scale = Double(targetWidth)/Double(image.size.width) 
     scale = 1/scale // new added 
     let scaledImage = UIImage(data: UIImagePNGRepresentation(image)! as Data, scale: CGFloat(scale)) 
     return scaledImage! 
} 

print("originImageBeforeWidth: \(portrait?.size.width)") // output: 750 
let newImage = Tools.scaleImage(image: portrait!, ToSpecificWidth: 128) // the scale is about 5.88 
print("newImageWidth: \(newImage.size.width)") // output: 128 

Какой именно то, что я хочу, но масштаб код = 1/масштаб не имеет никакого смысла

Что происходит Вот?

+0

http://stackoverflow.com/questions/31314412/how-to-resize-image-in-swift проверить это –

ответ

1

Метод init, который вы пытаетесь использовать, не предназначен для изменения размера изображения. Параметр scale не является шкалой изменения размера. Это шкала 1x, 2x, 3x. По существу, единственными допустимыми значениями для scale в настоящее время являются 1.0, 2.0 или 3.0.

При настройке scale на обратное тому, что вы ожидали, дает вам свойство size, возвращающее желаемый результат, совсем не то, что вы должны делать.

Есть правильные способы изменения размера изображения, например How to Resize image in Swift?, а также других.