概要
「Mac でモザイクとかぼかしの画像を作りたいなぁ」「でも、ソフトをダウンロードしてインストールとかしたくない(or できない)なぁ」と思った時の対応策の備忘録。
Xcode を使って、Command + C
等でクリップボードにコピーされた画像を読み込んで、ぼかし加工を行い出力する方法。
前提
- OS: macOS Mojave (10.14.2)
- Xcode: Version 10.1 (10B61)
手順
Xcode を起動し、ぼかし加工用プロジェクト作成
メニューから「File > New > Playground」を選択して、新規プロジェクト作成する。
Mac の PC 上で使うので、対象 OS は macOS
にして、空(Blank)のプロジェクト「Next」をクリック。

名前はなんでも良いが「ぼかし加工」とかにしちゃう。

ぼかし加工を行うプログラムを書く
プレイグラウンドの編集画面が開いたら、以下のソースをそのまま貼り付ける(エラーは出ないはずですが、出たら自動 fix とかで随時対応してください)。
import Cocoa
import CoreImage
print("[START] クリップボードのイメージをぼかします")
// 変換処理補完ロジック:これが無いと, 変換がするが途中でエラー出力される場合がある
extension CIImage: CustomPlaygroundDisplayConvertible {
static let playgroundRenderContext = CIContext()
public var playgroundDescription: Any {
let jpgData = CIImage.playgroundRenderContext.jpegRepresentation(of: self, colorSpace: CGColorSpace(name: CGColorSpace.sRGB)!, options: [:])!
return NSImage(data: jpgData)!
}
}
// ぼかしレベル: 初期値 10.0, 数値が大きいほどぼかし効果大.
let blurLevel = 10.0
// クリップボードから画像データ取得
let pasteboard = NSPasteboard.general;
let clipboardData = pasteboard.data(forType: NSPasteboard.PasteboardType.tiff)
if(clipboardData == nil){
print("[WARN] Command + C でクリップボードへ画像をコピーしてください.")
exit(1)
}
var sourceCiImage = CIImage(data: clipboardData!) // 変換前のCI画像
// ぼかし加工 実施
let filter = CIFilter(name: "CIGaussianBlur")
filter?.setDefaults()
filter?.setValue(sourceCiImage, forKey: "inputImage")
filter?.setValue(blurLevel, forKey: "inputRadius")
let outputImage = filter?.outputImage
let cropRect = CGRect(origin: CGPoint(x: 0, y: 0), size: sourceCiImage!.extent.size)
let blurredImage = NSBitmapImageRep(ciImage: outputImage!.cropped(to: cropRect)) // 変換後のCI画像
// クリップボードを一度クリアし, 変換後データをセット
pasteboard.clearContents();
pasteboard.setData(blurredImage.tiffRepresentation!, forType: NSPasteboard.PasteboardType.png)
print("[DONE] ぼかし完了. Command + V で任意の場所にペーストしてください.")
これで完了。
クリップボードのイメージを読み取り、ぼかして再度クリップボードにセットする処理が完成した。
確認してみる
適当な画像を Mac の標準画像ビューワ「イメージ」で開いてみる。

ぼかしたい場所を範囲選択する(下図で、わかりにくいけど真ん中ら辺を四角くドラッグしている)
そして、クリップボードにコピー( Command + C
)する

ぼかし加工のプログラムの方へ切り替え、コンソール出力を表示しておく(右上のタブバーアイコンをクリックで表示できる)

左下の「実行アイコン(▷)」をクリックして、ぼかし加工プログラムを実行させる。
成功すると、下記の様になる(Playground は、プレビューアイコンクリックで、下の様にソース内の特定の箇所にプレビュー表示ができる)。

この状態で、「プレビュー」に戻り、 Command + V
でペーストしてみると、以下の様になる。

ペーストイメージは、画像のど真ん中に配置されるので、適当に移動して重ねればOK。
無事、ぼかし画像の作成ができた。
これで、ネット上からぼかしツールとかを新たにインストールしなくても、「コピー ▶︎ ぼかし加工 ▶︎ ペースト」で簡単にぼかし加工ができる。
テキスト文字などの場合は、ぼかし画像の下のオリジナルが視認できる場合があるため、
一度対象箇所の背景色でオリジナルを完全に塗りつぶし、その上に ぼかし加工したイメージを貼り付けると良い。
(ただし、Xcode のバージョン更新でソースコードの書き方が変わる可能性はあるのでご注意)