CIFilterのblurぼかしで画像を小さく縮ませない方法
画像が縮む問題
CIFilterのCIGaussianBlurでCIImageをぼかすと、画像がShrinkしてしまう。
let blurredImage = CIFilter(name: "CIGaussianBlur", parameters: [kCIInputImageKey:originalCIImage,
kCIInputRadiusKey:50])?.outputImage?
CGImageを操作したり、AccelerateやMetalPerformanceShader、OpenCVのフィルターを使うと元と同じサイズのぼかし画像が得られるけれど、メモリ使用が大きい。
CoreImageのなかで完結すると、何枚ぼかしても数MBしかメモリを使わない。
方法
let cropSize = CGRect(x: 0, y: 0, width: originalCIImage.extent.width * 0.999, height: originalCIImage.extent.height * 0.999)
let blured = CIFilter(name: "CIGaussianBlur", parameters: [kCIInputImageKey:originalCIImage,
kCIInputRadiusKey:50])?.outputImage?.cropped(to: cropSize).resize(as: originalCIImage.extent.size)
Cropすると画像サイズに合わせてくれます。
リサイズメソッドはこちら↓
extension CIImage {
func resize(as size: CGSize) -> CIImage {
let selfSize = extent.size
let transform = CGAffineTransform(scaleX: size.width / selfSize.width, y: size.height / selfSize.height)
return transformed(by: transform)
}
}
🐣
お仕事のご相談こちらまで
[email protected]
Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。
Author And Source
この問題について(CIFilterのblurぼかしで画像を小さく縮ませない方法), 我々は、より多くの情報をここで見つけました https://qiita.com/john-rocky/items/fd95603462843155b5e8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .