ios — объединить два разных изображения в Swift
Задать вопрос
спросил
Изменено 1 год, 9 месяцев назад
Просмотрено 5к раз
Я хочу объединить два UIImage в Swift:
и
Я пробовал с
func maskImage(image: UIImage, withMask maskImage: UIImage) -> UIImage {
пусть maskRef = maskImage.CGImage
пусть маска = CGImageMaskCreate(
CGImageGetWidth(maskRef),
CGImageGetHeight(маскаRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef),
ноль,
ЛОЖЬ)
пусть замаскировано = CGImageCreateWithMask(image.
CGImage, маска)
пусть maskedImage = UIImage(CGImage: замаскировано!)
// Не нужно освобождать. Объекты Core Foundation автоматически управляются памятью.
возврат маскированного изображения
}
и вызов
let imageName = data.valueForKey("imagename")!.description
пусть изображение = UIImage (с именем: imageName)
пусть imageBackground : UIImage = UIImage (с именем: «фон»)!
пусть maskedImage: UIImage = self.maskImage(изображение!, withMask: imageBackground)
cell.imageButton.setImage(maskedImage, forState: .Normal)
результат — это просто изображение, которое я получаю с помощью let image = UIImage(named: imageName) , второе изображение (волейбол)
В чем моя ошибка?
- ios
- swift
- слияние
- uiimage
8
Если вас не волнует производительность, вы можете использовать Core Image
let volleyballImage = CIImage(image: UIImage(named:"volleyball.png")!)!) let otherImage = CIImage(image: UIImage(named:"other.png")!) пусть композитный фильтр = CIFilter (имя: "CIAdditionCompositing")! композитный фильтр. setValue (volleyballImage, forKey: kCIInputImageKey) составной фильтр. setValue (другое изображение, forKey: kCIInputBackgroundImageKey) если пусть композитное изображение = композитный фильтр.выходное изображение { пусть изображение = UIImage (CIImage: составное изображение) // делаем что-то с "объединенным" изображением }
1
Вы можете сделать это в несколько строк:
var bottomImage:UIImage = UIImage(named: "imageName")! var topImage:UIImage = UIImage(с именем:"фон")! // Измените здесь новый размер изображения, если хотите var newSize = CGSizeMake (нижнее изображение. размер. ширина, нижнее изображение. размер. высота) UIGraphicsBeginImageContextWithOptions (newSize, false, bottomImage.


png")!)!)
let otherImage = CIImage(image: UIImage(named:"other.png")!)
пусть композитный фильтр = CIFilter (имя: "CIAdditionCompositing")!
композитный фильтр. setValue (volleyballImage,
forKey: kCIInputImageKey)
составной фильтр. setValue (другое изображение,
forKey: kCIInputBackgroundImageKey)
если пусть композитное изображение = композитный фильтр.выходное изображение {
пусть изображение = UIImage (CIImage: составное изображение)
// делаем что-то с "объединенным" изображением
}
