iOS 10.2 swift 3.0Созданный UIImage не появляется, как я ожидал?
Я использую эти процедуры для вырезания, изменения размера и рекомбинации изображения для отображения на AppleTV. Но, несмотря на то, что он сообщает изображение как правильный размер, он не работает так, как я ожидал/хотел.
Что я здесь пропустил?
func cropImage(image: UIImage, newRect: CGRect) -> UIImage {
let img = CIImage(image: image)!.cropping(to: newRect)
let image = UIImage(ciImage: img, scale: 1.0, orientation: image.imageOrientation)
return image
}
func combine2LONGImage(imageUn: UIImage, imageDeux: UIImage) -> UIImage {
let size = CGSize(width: imageUn.size.width + imageDeux.size.width, height: imageUn.size.height)
UIGraphicsBeginImageContext(size)
imageUn.draw(in: CGRect(x: 0, y: 0, width: imageUn.size.width, height: imageUn.size.height))
imageDeux.draw(in: CGRect(x: imageUn.size.width, y: 0, width: imageDeux.size.width, height: imageDeux.size.height))
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return newImage
}
func resizeLONGImage(image: UIImage, newSize: CGSize) -> UIImage {
UIGraphicsBeginImageContext(newSize)
image.draw(in: CGRect(x:0, y:0, width: newSize.width, height: self.view.bounds.height))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
let leftSide = CGRect(x: 0, y: 0, width: (image2S?.size.width)!/2, height: self.view.bounds.height)
let leftImage = self.cropImage(image: image2S!, newRect: leftSide)
let rightSide = CGRect(x: (image2S?.size.width)!/2, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
let rightImage = self.cropImage(image: image2S!, newRect: rightSide)
print("20022017 \(leftImage) \(rightImage)")
let newLeftImage = self.resizeLONGImage(image: leftImage, newSize: CGSize(width: self.view.bounds.width, height: self.view.bounds.height))
let newRightImage = self.resizeLONGImage(image: rightImage, newSize: CGSize(width: self.view.bounds.width, height: self.view.bounds.height))
let superNewImage = self.combine2LONGImage(imageUn: newLeftImage, imageDeux: newRightImage)
print("19022017 newimage \(self.image2P.bounds) \(leftImage.size.width) \(newLeftImage.size.height) \(superNewImage.size)")
self.image2P.image = superNewImage
self.image2P.contentMode = .left
self.image2P.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
Изображение Возвращается [правильный размер [вдвое дольше, чем экран AppleTV, такой же высоты] ... но contentMode
меня не подводит, она изменяет размер изображения, кажется, что он подходит на экране !!]. Я сделал снимок, и я получил это ...
Да, это 3 & 4, но его так же, как 1 & 2.
Консоль отчетов?
19022017 previewPane 1920.0 1080.0 1920.0 1080.0
20022017 Optional(<UIImage: 0x60000009d9c0>, {1920, 768}) Optional(<UIImage: 0x60000009da10>, {1024, 768})
19022017 newimage (0.0, 0.0, 1920.0, 1080.0) 1920.0 1080.0 (3840.0, 1080.0)
superNewImage
является 3840 в ширину и 1080 высоко, и я сказал, просто оставил его оправдать, но то, что он делает?
Если я загружаю изображение, которое я создал с помощью Paint, оно имеет одинаковый размер и показывает его на экране, он работает так, как я ожидал, наполовину на экране, наполовину выключен.
Оригинальное изображение, которое я начинаю с здесь.
То, что я ищу, чтобы сделать это шоу только первая цифра на экране так, чтобы пользователь приложения может прокручивать боком ко второму. Прокрутка у меня работала, некоторые исправления. И он работает, если я загружу предварительно настроенное изображение с правильным размером [2 x width, same height]. Но если я загружу изображение, которое является подмножеством, попробуйте обрезать + объединить его, но он не работает.
Только что добавил левый элемент кода, другой, возможно, ... все еще не работает. Первый образ, который я создал точный размер работал, это выглядит так ...
Оригинальные выглядит так ...
ok - немного неясно, с чего начинаешься, и что вы пытаетесь в итоге ... Можете ли вы ссылаться на исходное изображение и как вы ожидаете его завершения? И, я полагаю, ваша функция 'cropImage()' такая же, как 'self.chopImageFromRect()'? – DonMag
Хммм ... ваше оригинальное изображение - '2048 x 768' да? Вы хотите, чтобы это непропорционально масштабировалось до '3840 x 1080'? Или вы хотите, чтобы она пропорционально масштабировалась до «2880 x 1080», а затем каждая половина по центру была горизонтально в каждой части окончательного изображения «3840 x 1080»?Или вы не хотите масштабировать изображение, а вместо этого центрируете каждую половину вертикально и горизонтально в каждой части финального изображения «3840 x 1080»? – DonMag
Я хочу, чтобы изображение масштабировалось так, чтобы оно соответствовало AppleTV как два отдельных экрана AppleTV. Таким образом, единственное изображение размером 3840 x 1080. Я хочу, чтобы это изображение появилось на экране первоначально, как будто оно всего лишь 1920 x 1080, что дает пользователю возможность увидеть вторую половину в 1920 x 1080, прокручивая ее. Я беру 2048 x 768, разделяю его на два (1024 x 768), изменяя размер двух половин, а затем объединяю их в один, заканчивая изображением 3840 x 1080. Но когда я показываю его на экране, я вижу обе половины на в то же время, несмотря на просто использование contentMode = left. – user3069232