20150603卒研進捗LT (share)

Preview:

Citation preview

Revenge

1

me

Jun Kasamatsu mohemohe

mohemohe

内定者研修で出た課題が

とてもつらい

© 2014 Yamato Fujinaka 2

3

近況

4

5

6

w/ WiiU

7

残高ピンチ

8

movie

9

Revenge

10

Revenge

前回のスライド

11http://www.slideshare.net/mohemohe/20150527lt-share

WebcamRT

俺が考えた最強の

Web カメラ操作

ライブラリ12http://www.slideshare.net/mohemohe/20150527lt-share

WebcamRT

WebcamRT

13http://www.slideshare.net/mohemohe/20150527lt-share

WebcamRT

demo

14http://www.slideshare.net/mohemohe/20150527lt-share

WebcamRT

demo

15http://www.slideshare.net/mohemohe/20150527lt-share

WebcamRT

今回はやります

16

WebcamRT

demo

17

スコープの範囲

why?

18

スコープの範囲public async Task<Bitmap> GetBitmap(){ if (!_initialized) { throw new DeviceNotInitializedException(); }

Bitmap bitmap; using (var ras = new InMemoryRandomAccessStream()) { await _capture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreatePng(), ras); ras.Seek(0); bitmap = new Bitmap(ras.AsStream()); } return bitmap;}

19

スコープの範囲public async Task<Bitmap> GetBitmap(){ if (!_initialized) { throw new DeviceNotInitializedException(); }

Bitmap bitmap; Stream stream; using (var ras = new InMemoryRandomAccessStream()) { await _capture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreatePng(), ras); ras.Seek(0); stream = ras.AsStream(); } bitmap = new Bitmap(stream); return bitmap;}

20

スコープの範囲

using () {}IDisposable

21

スコープの範囲

using () {}IDisposable

22

スコープの範囲

C# のオブジェクト指向• var hogeHuga = new HogeHuga();

• hogeHuga.Dispose();

23

スコープの範囲

C# のオブジェクト指向class HogeHuga : FooBar, IDisposable

24

スコープの範囲

C# のオブジェクト指向class HogeHuga : FooBar, IDisposable

using (var hogeHuga = new HogeHuga())

{

hogehuga.Do();

} // ここで自動的に Dispose() される

25

スコープの範囲public async Task<Bitmap> GetBitmap(){ if (!_initialized) { throw new DeviceNotInitializedException(); }

Bitmap bitmap; Stream stream; using (var ras = new InMemoryRandomAccessStream()) { await _capture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreatePng(), ras); ras.Seek(0); stream = ras.AsStream(); // ras のメモリアドレスを参照しているだけ } // ここで Dispose() されて stream が null になる bitmap = new Bitmap(stream); // null から Bitmap を生成できなくて死ぬ return bitmap;}

26

スコープの範囲public async Task<Bitmap> GetBitmap(){ if (!_initialized) { throw new DeviceNotInitializedException(); }

Bitmap bitmap; using (var ras = new InMemoryRandomAccessStream()) { await _capture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreatePng(), ras); ras.Seek(0); bitmap = new Bitmap(ras.AsStream()); // スコープ外の bitmap に Bitmap オブジェクトを作っておく } return bitmap; // ras は使っていないので Dispose() されても OK}

27

WebcamRT

done is better

than perfect.

28

WebcamRT

done is better

than perfect.

29

WebcamRT

クッソ遅い

30

Windows 8.1

LowLagPhotoCapture

ClassWindows 8.1

31

32

Windows 8.1

ナウでヤングな若者のための

最高にロックな

低シャッター遅延フォト

33

WebcamRT

demo

34

WebcamRT

demo

35

WebcamRT

why?

36

37

WebcamRT

BitmapImage

Bitmap38

WebcamRT

BitmapImage

Bitmap39

WebcamRT

BitmapFrame.Create(

)

40

41

WebcamRT

なぜかできない

42

agenda

• WebcamRT

• スコープの範囲

• ナウでヤングな若者のための最高にロックな低シャッター遅延フォト

44

Recommended