HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2016/12/26

Xcode SWIFTで Mac OSX用のスクリーンキャプチャアプリ&画像保存を作る Xcode SWIFTで Mac OSX用のスクリーンキャプチャアプリ&画像保存を作る

(Mac OS X用アプリを Swift言語で作る方法、デスクトップの画像をキャプチャする方法)

Tags: [Apple], [MacBook]




● Xcode 7.3.1 Swift 2.2.1で OS X用のアプリを作る

Welcome to Swift.org

 ここでは、Xcode 7.3.1 Swift 2.2.1を使用してアプリを作ります。

 スクリーンキャプチャアプリを作成します。

●必要な実装処理内容の一覧

 主な実装処理
 ・画面全体を画像として取得する
 ・画面の座標指定したエリアを画像として取得する
 ・画像を PNG画像ファイルとして保存する

//  Copyright (c) 2016 FREE WING,Y.Sakamoto. All rights reserved.

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

	@IBOutlet weak var window: NSWindow!

	// アプリ開始時の処理
	func applicationDidFinishLaunching(aNotification: NSNotification) {
		// Insert code here to initialize your application

		let mainID = CGMainDisplayID()
		print("ID is \(mainID)")

		var maxDisplays: UInt32 = 0
		CGGetOnlineDisplayList(0, nil, &maxDisplays)
		var onlineDisplays = [CGDirectDisplayID](count: Int(maxDisplays), repeatedValue: 0)
		var displayCount: UInt32 = 0

		let dErr = CGGetOnlineDisplayList(maxDisplays, &onlineDisplays, &displayCount)

		print("dspyCnt is \(displayCount)")
		for currentDisplay in onlineDisplays[0..<Int(displayCount)] {

			print("currentDisplay is \(currentDisplay)")
			print("CGDisplayPixelsHigh(currentDisplay) is \(CGDisplayPixelsHigh(currentDisplay))")
			print("CGDisplayPixelsWide(currentDisplay) is \(CGDisplayPixelsWide(currentDisplay))")
		}

// ・画面全体を画像として取得する
		let imageRep: CGImageRef = CGDisplayCreateImage(CGMainDisplayID())!

// ・画像を PNG画像ファイルとして保存する
		let bitmap = NSBitmapImageRep(CGImage: imageRep)
		let properties = NSDictionary() as! [String : AnyObject]
		bitmap.representationUsingType(NSBitmapImageFileType.NSPNGFileType, properties: properties)!
			.writeToFile("/Users/xxx/ScreenShot1.png", atomically:true)

// ・画面の座標指定したエリアを画像として取得する
		let captureSize: Int = 128
		let centerOffset = Int(captureSize / 2)
		let captureRect: CGRect = CGRect(x: 0, y: 0, width: captureSize, height: captureSize)

		// kCGWindowListOptionOnScreenOnly
		let option: CGWindowListOption = CGWindowListOption.OptionOnScreenOnly
		// kCGNullWindowID
		let relativeToWindow: CGWindowID = (CGWindowID(0))
		// kCGWindowImageBoundsIgnoreFraming
		let imageOption = CGWindowImageOption.BoundsIgnoreFraming

		let cgImage: CGImage = CGWindowListCreateImage(captureRect, option, relativeToWindow, imageOption)!

// ・画像を PNG画像ファイルとして保存する
		let bitmap2 = NSBitmapImageRep(CGImage: cgImage)
		let properties2 = NSDictionary() as! [String : AnyObject]
		bitmap2.representationUsingType(NSBitmapImageFileType.NSPNGFileType, properties: properties2)!
			.writeToFile("/Users/xxx/ScreenShot2.png", atomically:true)
	}



Tags: [Apple], [MacBook]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Xcodeで Mac OSX用のクリップボード共有&履歴アプリを作る
Xcodeで Mac OSX用のクリップボード共有&履歴アプリを作る

  Mac OS X用アプリを Swift言語で作る方法、MacOSXでクリップボード監視で変化が有ったら取得

Xcode SWIFTで Mac OSX用のスクリーンマスコットアプリを作る
Xcode SWIFTで Mac OSX用のスクリーンマスコットアプリを作る

  Mac OS X用アプリを Swift言語で作る方法、デスクトップ画面に画像をオーバーレイで描画する方法

Xcode SWIFTで Mac OSX用のスクリーン拡大鏡アプリを作る
Xcode SWIFTで Mac OSX用のスクリーン拡大鏡アプリを作る

  Mac OS X用アプリを Swift言語で作る方法、マウスカーソルの位置をリアルタイムで取得する方法

Xcode SWIFTで Mac OSX用の Finderからドラッグ&ドロップを受け付けるアプリを作る
Xcode SWIFTで Mac OSX用の Finderからドラッグ&ドロップを受け付けるアプリを作る

  Mac OS X用アプリを Swift言語で作る方法、ドラッグ&ドロップを受け付ける方法

Xcodeで Mac OSX用の使えそうな処理を Tipsとしてまとめ
Xcodeで Mac OSX用の使えそうな処理を Tipsとしてまとめ

  Mac OS X用アプリを Swift言語で作る方法

Apple MacBook Airを買ってみた。開発者必須アプリの紹介
Apple MacBook Airを買ってみた。開発者必須アプリの紹介

  Xcodeで iPhoneの開発の為に、Mac OS X用アプリを Swift言語で作る方法

Windowsパソコンで Macる。Skylake Platform in OSX86 Hackintoshの夢、BIOS設定内容
Windowsパソコンで Macる。Skylake Platform in OSX86 Hackintoshの夢、BIOS設定内容

  Windows PCで iPhone開発、Mac OS Xで Hackintoshの方法、DVMT Pre-Allocated 128MB

VirtualBoxに Mac OS X macOS Sierraをインストールの夢
VirtualBoxに Mac OS X macOS Sierraをインストールの夢

  Windowsの VirtualBoxに Mac環境を作り OS Xをインストールして動かす夢を見る

Raspberry Pi3で iPhoneの開発言語でお馴染みの Swiftを動かし、GPIOを操作して Lチカする方法
Raspberry Pi3で iPhoneの開発言語でお馴染みの Swiftを動かし、GPIOを操作して Lチカする方法

  Raspbian Jessieで Swift言語のセットアップ方法、GPIOの LEDを Lチカや I2Cを制御する方法




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2016 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/xcode/xcode_swift_3_screen_capture/