Objective-Cで書かれた画像(NSImage)を回転させるコードをSwiftに移植してみました。

 

オリジナル

rotate a NSImage · GitHub

https://gist.github.com/Rm1210/10621763

 

Swiftのコード

extension NSImage {
	// 角度は反時計回り指定
	func rotatedImage(degrees: CGFloat) -> NSImage {
		let deg = fmod(degrees, 360)
		if deg == 0 {
			return self
		}

		let orgSize = self.size
		var maxSize = NSSize()
		switch deg {
		case 90, 270, -90, -270:
			maxSize = NSMakeSize(orgSize.height, orgSize.width)
		case 180, -180:
			maxSize = orgSize
		default:
			maxSize = NSMakeSize(20+max(orgSize.width, orgSize.height), 20+max(orgSize.width, orgSize.height))
		}

		let rot = NSAffineTransform()
		rot.rotate(byDegrees: degrees)
		let center = NSAffineTransform()
		center.translateX(by: maxSize.width / 2, yBy: maxSize.height / 2)
		rot.append(center as AffineTransform)

		let rotatedImage = NSImage(size: maxSize)
		rotatedImage.lockFocus()
		rot.concat()
		let rect = NSMakeRect(0, 0, orgSize.width, orgSize.height)
		let corner = NSMakePoint(-orgSize.width / 2, -orgSize.height / 2)
		draw(at: corner, from: rect, operation: .copy, fraction: 1.0)
		rotatedImage.unlockFocus()

		return rotatedImage
	}
}
今日は八幡様の神事を終えた後カメラ片手に周辺をブラブラ。一番の収穫はハグロソウの新たな自生地を発見したこと。今まで把握していた自生地は自転車で30分かかる距離だったので近場で発見できたのは嬉しい。

2019年8月24日 山口県
#植物

【ハグロソウ】 【ハグロソウ:携帯用】

【ハグロソウ】 【ハグロソウ:携帯用】

【ハグロソウ】 【ハグロソウ:携帯用】

近所でマタタビが実をつけているのを見つけました。写真中多数写っているボコボコした形のものは実ではなく、マタタビアブラムシやマタタビミタマバエが花に寄生することによってできるマタタビミフクレフシという虫こぶです。本当の実は細長いドングリのような形をしたものです。咲いた花がちゃんとした実になる確率は低いのですね。

2019年8月24日 山口県
#植物 #虫こぶ #虫えい

【マタタビ】 【マタタビ:携帯用】

【マタタビミフクレフシ】 【マタタビミフクレフシ:携帯用】

【マタタビの実とマタタビミフクレフシ】 【マタタビの実とマタタビミフクレフシ:携帯用】