Slide 1

Slide 1 text

1 ·ͩ+1&(Ͱফ໣ͯ͠Δͷʁ ʙ8FC1Ͱ૑Δշద৽ฉϥΠϑʙ ٢ా݈ਓ೔ຊܦࡁ৽ฉࣾσδλϧฤ੒ہฤ੒෦

Slide 2

Slide 2 text

2 ೔ຊܦࡁ৽ฉࣾͷJ04ΤϯδχΞ ࣗݾ঺հ ࢴ໘ϏϡʔΞʔΞϓϦͷ։ൃ (JUIVC!UBNBOZBO ٢ా݈ਓ :PTIJEB5BLFUP

Slide 3

Slide 3 text

3 গ͠Ͱ΋ը૾ͷ௨৴ྔΛݮΒͯ͠ μ΢ϯϩʔυΛ଎͍ͨ͘͠ʜ

Slide 4

Slide 4 text

4 J04্Ͱ8FC1Λ࢖༻ͯ͠ಘͨ ஌ݟΛൃද͠·͢

Slide 5

Slide 5 text

5 8FC1ͱ͸ʁ (PPHMF͕։ൃ͍ͯ͠Δը૾ϑΥʔϚοτ ՄٯѹॖͱඇՄٯѹॖͷ྆ํΛαϙʔτ ඇՄٯѹॖͰ͸+1&(ͱൺ΂ͯখ͘͞ͳΔ

Slide 6

Slide 6 text

6 ଞࣾͷ࠾༻ࣄྫ

Slide 7

Slide 7 text

7 IUUQXXXTMJEFTIBSFOFUTVTJFZZJPTJPT

Slide 8

Slide 8 text

8 IUUQUFDIMJGFDPPLQBEDPNFOUSZ

Slide 9

Slide 9 text

9 IUUQIPNFTEFTJHOFSTIBUFOBCMPHDPNFOUSZ

Slide 10

Slide 10 text

10 ೔ܦͰ͸ࢴ໘ϏϡʔΞʔͰ8FC1Λ࢖༻

Slide 11

Slide 11 text

11 ࢴ໘ΠϝʔδΛ8FC1Ͱ഑৴ +1&(ͱಉըૉ਺Ͱ໿ݮ ಉըૉ਺Ͱ΋ϊΠζΛখ͘͞ ˞݄೔ͷேץͰଌఆ

Slide 12

Slide 12 text

12 ༰ྔ.#ˠ.# μ΢ϯϩʔυ଎౓ඵˠඵ ˞݄೔ͷேץͰଌఆ

Slide 13

Slide 13 text

13 J04ʹͯ8FC1Λѻ͏ʹ͸

Slide 14

Slide 14 text

14 MJCXFCQΛ࢖༻͢Δ IUUQTHJUIVCDPNXFCNQSPKFDUMJCXFCQ

Slide 15

Slide 15 text

15 private func freeImageData(info: UnsafeMutablePointer, data: UnsafePointer, size: Int) { free(UnsafeMutablePointer(data)) } extension UIImage { static func imageFromWebPData(data: NSData) -> UIImage? { var config = WebPDecoderConfig() if WebPInitDecoderConfig(&config) == 0 { return nil } if WebPGetFeatures(UnsafePointer(data.bytes), data.length, &config.input) != VP8_STATUS_OK { return nil } config.output.colorspace = config.input.has_alpha != 0 ? MODE_rgbA : MODE_RGB if WebPDecode(UnsafePointer(data.bytes), data.length, &config) != VP8_STATUS_OK { return nil } let width = config.input.width let height = config.input.height let provider = CGDataProviderCreateWithData(nil, config.output.u.RGBA.rgba, config.output.u.RGBA.size, freeImageData) let colorSpaceRef = CGColorSpaceCreateDeviceRGB() let components = config.input.has_alpha != 0 ? 4 : 3 let bi = config.input.has_alpha != 0 ? CGBitmapInfo(rawValue: CGBitmapInfo.ByteOrderDefault.rawValue | CGImageAlphaInfo.PremultipliedLast.rawValue) : CGBitmapInfo.ByteOrderMask guard let imageRef = CGImageCreate( Int(width), Int(height), 8, components * 8, components * Int(width), colorSpaceRef, bi, provider, nil, true, .RenderingIntentDefault) else { return nil } return UIImage(CGImage: imageRef) } } MJCXFCQΛѻ͍΍͘͢͢ΔͨΊʹ&YUFOTJPOΛॻ͘

Slide 16

Slide 16 text

16 ϙΠϯλʔຬࡌͳΜͰ0CK$Ͱ ॻ͍ͨํָ͕͔΋ʜ

Slide 17

Slide 17 text

17 J04Ͱ΋8FC1͸αϙʔτ֎ͳͷʁ

Slide 18

Slide 18 text

18 IUUQXXXDOFUDPNOFXTBQQMFJPTNBDPTUFTUTHPPHMFTXFCQHSBQIJDTUPTQFFEVQXFC

Slide 19

Slide 19 text

19 αϙʔτŝŦᴸᴸᴸ ƅ˲ƅ ᴸᴸᴸ

Slide 20

Slide 20 text

20 J04CFUBͰݕূͯ͠Έͨ

Slide 21

Slide 21 text

21

Slide 22

Slide 22 text

22 ( ゚д゚) ・・・   (つд⊂)ゴシゴシ   (;゚д゚) ・・・   (つд⊂)ゴシゴシゴシ   _, ._ (;゚ Д゚) …!?

Slide 23

Slide 23 text

23 Ͳ͏͍͏͜ͱͩͬͯ͹Α

Slide 24

Slide 24 text

24 5XJUUFSͰௐ΂ͯΈͨ

Slide 25

Slide 25 text

25

Slide 26

Slide 26 text

26

Slide 27

Slide 27 text

27 ΍ͬͺŠŮᴸᴸᴸᴸ "A ᴸᴸᴸᴸ

Slide 28

Slide 28 text

28 ࠓͷͱ͜ΖMJCXFCQΛ࢖͏͔͠ͳ͍

Slide 29

Slide 29 text

29 8FC1ͷύϑΥʔϚϯε

Slide 30

Slide 30 text

30 8FC1ͷύϑΥʔϚϯε ࣮ࡍ+1&(ͱൺֱͨ࣌͠ͷαΠζ͸ʁ μ΢ϯϩʔυ͔Βදࣔ·Ͱʹ͔͔Δ࣌ؒ͸ʁ ը࣭ͷධՁ͸ͲͷΑ͏ʹߦ͏ʁ

Slide 31

Slide 31 text

31 ೥݄೔ேץϖʔδ޿ࠂ໘ ˞.#ͷ1/( YQY

Slide 32

Slide 32 text

32 QY QY QY QY QY ͭͷαΠζͷը૾+1&(ͱ8Λ༻ҙ͢Δ

Slide 33

Slide 33 text

33 ࣮ࡍ+1&(ͱൺֱͨ࣌͠ͷαΠζ͸ʁ

Slide 34

Slide 34 text

34 ը૾ͷԣαΠζ QY +1&(ͷαΠζ ,# 8FC1ͷαΠζ ,# dͷαΠζͷ࡟ݮ

Slide 35

Slide 35 text

35 μ΢ϯϩʔυ͔Βදࣔ·Ͱʹ
 ͔͔Δ࣌ؒ͸ʁ

Slide 36

Slide 36 text

36 J04Ͱ8FC1Λ࢖༻͢Δ࣌͸ σίʔυ࣌ؒΛߟྀ͢Δඞཁ͕͋Δ

Slide 37

Slide 37 text

37 EPXOMPBE࣌ؒ KQFHEFDPEF࣌ؒ +1&(ͷ৔߹ ࣮࣭ͷμ΢ϯϩʔυ࣌ؒ

Slide 38

Slide 38 text

38 EPXOMPBE࣌ؒ XFCQEFDPEF࣌ؒ 8FC1ͷ৔߹ ࣮࣭ͷμ΢ϯϩʔυ࣌ؒ

Slide 39

Slide 39 text

39 var start = NSDate() [download(url128a), download(url128b), download(url128c), download(url128d), download(url128e)].sequence().then { images in let elapsed = NSDate().timeIntervalSinceDate(start) NSLog(elapsed) } ͭͷϑΝΠϧΛಉ࣌ʹμ΢ϯϩʔυͯ͠6**NBHF·Ͱ མͱ͜͠Μͩ࣌ͷ࣌ؒΛ࣮࣭ͷμ΢ϯϩʔυ࣌ؒͱͯ͠ܭଌ ˞࣮ݧ؀ڥJ1IPOFT4PGUCBOL(-5&

Slide 40

Slide 40 text

40 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 128 256 512 1024 2048 ) ( webp jpeg ը૾αΠζ͕େ͖͍΄Ͳ࣮࣭ͷμ΢ϯϩʔυ࣌ؒ͸୹ॖ͞ΕΔ

Slide 41

Slide 41 text

41 ը૾αΠζ͕େ͖͍΄Ͳ ௨৴ίετσίʔυίετ

Slide 42

Slide 42 text

42 ৽ฉͷΑ͏ͳըૉ਺͕ଟ͍ը૾ μ΢ϯϩʔυ͢ΔΞϓϦʹ͸༗ޮ

Slide 43

Slide 43 text

43 ը࣭ͷධՁ͸ͲͷΑ͏ʹߦ͏ʁ

Slide 44

Slide 44 text

44 44*. ͭͷը૾͕Ͳͷఔ౓ࣅ௨͍ͬͯΔ͔Λ൑அ͢Δख๏ Ұൠతʹ44*.ͷ஋͕Ҏ্͋Ε͹ΦϦδφϧͱಉ౳ͷ඼࣭ αΠζΛ཈͑ͭͭྼԽ͠ͳ͍ϥΠϯͰύϥϝʔλΛௐ੔͢Δ

Slide 45

Slide 45 text

45 IUUQTHJUIVCDPNKUFSSBDFQZTTJN

Slide 46

Slide 46 text

46 ·ͱΊ

Slide 47

Slide 47 text

47 ·ͱΊ J04ͷ8FC1ͷαϙʔτΛকདྷతʹ͋Δ͔΋ ըૉ਺͕ଟ͍ը૾Λ࢖͍ͬͯΔͳΒ͹8FC1Λ࢖͏Ձ஋͕͋Δ 44*.Λར༻͢Δ͜ͱͰը࣭ͷධՁ͕Մೳ

Slide 48

Slide 48 text

48 5IBOLZPVGPSMJTUFOJOHUPNF