Satoru Hashimoto, PCPhase

1
1.

カメラで写真を撮ります

2.

正方形にトリムして回転とかも補正します

3.

レトロ調のエフェクトを掛けます

4.

ライブラリに保存します

5.

Twitterに投稿します

•

全部HTML5(と一部DeviceAPI)でやります
2
実機で実演します

3


カメラ画像取得



画像処理



ファイル保存



Twitter投稿



フォント

◦ <input type="file“ accept="image/*" capture="camera“>
◦ トリガーは別ボタンで、取得はchangeイベントから
◦ HTMLのCanvas上で
◦ Exif取得はHTML File API(FileReader)利用
◦ エフェクトはオープンソースのライブラリ:vintage.js利用
◦ DeviceAPIのFilesystemを利用
◦ オープンソースのjsOAuthを利用

◦ WebFontでgooglefontから取得

4


Googledrive(今日はこっちを。)



Github



WGTファイルのインポート

◦ http://goo.gl/mbl3R

◦ https://github.com/pcphashimoto/Tizengram
◦ (順次更新?)

◦ File > Import > Tizen > Web Projects and Widget
File
◦ Select Widget Fileでwgtファイルを選択
◦ Finish

5



STEP1:jQueryMobileでページを3つ作る
STEP2:Inputタグで画像を取得し、取得したら
ページ遷移する
◦ (今日の目標はこの辺)







STEP3:Canvasを使って画像処理をする
STEP4:画像にエフェクトかけてみる
STEP5:ギャラリーに保存する
STEP6:Twitterに投稿する

6


目標:
◦ jQueryMobile(もしくはTizenUI)で3ページ作り、ボタン
で遷移する



ポイント
◦ テンプレートはjQueryMobileかTizenUIのMultiPageがオスス
メ
◦ data-role=“page”のdivタグを3つ作り、それぞれにid
(one,two,three等)を振る
◦ content内にボタン(<a href=“#two” data-role=“button”>two</a>)を置く
◦ backボタンはpageのタグにdata-add-back-btn=“true”をつ
ければfooterに表示される。自分で作っても可
◦ ハードウェアキーの制御は下記、参考までに。
 documentのイベントで“tizenhwkey”というのが飛んできます
 e.keyNameが“back”や“menu”になります

7


ポイント
◦ <input type=“file” type="file" accept="image/*"
capture="camera ” id=“inputCamera” >
◦ 画像を取得したイベントは$(“#inputCamera”).change()
で取得する。
◦ イベントオブジェクトのe.target.files[0]がFile
◦ HTML5 File APIのFileReaderでデータを読み込むことが
できる
 FileReaderのreadAsDataURL→onload(e)
 $(“#inputImg”).attr(“src”, e.target.result)で画像取得

◦ ページ遷移のメソッドは$.mobile.changePage(“#two”)

8


ポイント
◦ カメラで撮った画像は解像度が大きすぎるので縮小した
い
 Canvasに貼り付けて縮小

◦ カメラで撮った画像は回転がかかっているので補正した
い
 exif情報取るのはややこしい
 canvas上で回転して描画するのもちょっとややこしい

◦ canvas[0].getContext(„2d‟)でコンテクストを取得し各
種の描画をする
◦ context.drawImage(img,…)で画像貼り付け
◦ canvas[0].toDataURL()でimgのsrc部分に出力する
9


ポイント
◦ vintage.jsのjQueryプラグイン版
 https://github.com/rendro/vintageJS
 $(“img”).vintage()でエフェクトが掛けられる
 $(“img”).data(“vintageJS”)で継続的な処理ができるAPI取得

◦ 今回はサンプルなので解像度は400x400で

10


ポイント
◦ DeviceAPIのfilesystemを利用。要Privilegesの設定
◦ tizen.filesystem.resolve(“images“,..)で共通のイメージ
ディレクトリ取得
◦ ファイル保存時はdata:image/png…などの部分は手で
削除
◦ dir.createFile > file.openStream > fs.write(今回は
writeBase64)の流れでファイル書き込み
◦ 最後にtizen.content.scanFileでギャラリーに認識させ
る(しなくても再起動後などにはギャラリーに反映され
る)

11


ポイント
◦ jsOAuth
http://bytespider.github.io/jsOAuth/
オープンソースのOAuthライブラリ
今回はブラウザを開いてPINで認可処理
認可が済むとoauth.get(url)などでtwitterなどのサービスに
アクセスできる
 multipartファイルアップロードにBlobが対応していなかっ
たので該当箇所を変更してます





12


jQueryMobileが必須ではない
◦ Sencha TouchがTizen対応
◦ Canvas主体で作るのもあり
 create.js, enchant.js, three.js, processing.js、etc…



大きめのアプリを作るときは設計を大切に
◦ $.getScriptでファイル分割
◦ JavaScriptによるMVCの話
 BackBone.js、require.jsその他の利用

◦ 重い処理ならWebWorkersやHybridアプリの利用も

13


HTML5はなんでも出来る訳じゃないけど意外と高機
能
◦ Inputでカメラ、ファイルアクセス
◦ Canvasで画像処理
◦ WebFont



様々な既存のJSライブラリが使える強み
◦ Canvasの画像処理補助系
◦ 各ソーシャルサービスのAPIのライブラリ等






Device APIでネイティブ機能にアクセス
デザインが自由
デバッグが楽
14

More Related Content

PDF
いつやるの?Git入門 v1.1.0
PDF
Gitの使い方あれこれ
PDF
やりなおせる Git 入門
PDF
YoctoでLTSディストリを作るには
PDF
vimプラグインでよりよい(ry
PDF
真Drone入門
PDF
20151114 jawsug
PDF
20180623 第5回python勉強会@仙台 発表資料
いつやるの?Git入門 v1.1.0
Gitの使い方あれこれ
やりなおせる Git 入門
YoctoでLTSディストリを作るには
vimプラグインでよりよい(ry
真Drone入門
20151114 jawsug
20180623 第5回python勉強会@仙台 発表資料

What's hot (20)

PDF
Gnomeとdogtai
ODP
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
PDF
SPAJAMでやったこと
PPTX
Docker meetup tokyo_public_r001
PDF
"Continuous Publication" with Python: Another Approach
PPTX
やさしいGitの内部構造 - yapcasia2013
POTX
素振りのススメ at Python入門者の集い
PDF
YoctoLTSについて調べてみた
PDF
Code injectiontool
PPTX
GitLabをバックアップしてみた
PPTX
勉強会 Cvml python基礎
PDF
Pythonによる非同期プログラミング入門
PDF
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
PPTX
DockerでJupyter使おうぜ
PDF
Gitのよく使うコマンド
PDF
Raspbian, OpenCV and about me(Takachiho.rb)
PPT
「やっちまったぁ!」を防ごう!
PDF
15分でわかるGit入門
KEY
Bundler kanazawa.rb meetup #2 2012/09/19
PDF
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
Gnomeとdogtai
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
SPAJAMでやったこと
Docker meetup tokyo_public_r001
"Continuous Publication" with Python: Another Approach
やさしいGitの内部構造 - yapcasia2013
素振りのススメ at Python入門者の集い
YoctoLTSについて調べてみた
Code injectiontool
GitLabをバックアップしてみた
勉強会 Cvml python基礎
Pythonによる非同期プログラミング入門
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
DockerでJupyter使おうぜ
Gitのよく使うコマンド
Raspbian, OpenCV and about me(Takachiho.rb)
「やっちまったぁ!」を防ごう!
15分でわかるGit入門
Bundler kanazawa.rb meetup #2 2012/09/19
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
Ad

Viewers also liked (13)

PPTX
the didactic, martha chonillo
PPTX
Introduction sdk
PPTX
PENDIDIKAN INDONESIA BARU
PPTX
ประวัติส่วนตัว
PDF
อุปกรณ์พื้นฐานคอมพิวเตอร์
PDF
อุปกรณ์เครือข่ายคอมพิวเตอร์
PPTX
Styles through the decades, martha chonillo
PDF
ผู้ให้บริการอินเทอร์เน็ต
PDF
ประวัติส่วนตัว
PDF
ประวัติส่วนตัว
PDF
อุปกรณ์เชื่อมต่อคอมพิวเตอร์
PPSX
Process of machine embroidery
PDF
เอกสารประกอบการอบรมปรับปรุง
the didactic, martha chonillo
Introduction sdk
PENDIDIKAN INDONESIA BARU
ประวัติส่วนตัว
อุปกรณ์พื้นฐานคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์
Styles through the decades, martha chonillo
ผู้ให้บริการอินเทอร์เน็ต
ประวัติส่วนตัว
ประวัติส่วนตัว
อุปกรณ์เชื่อมต่อคอมพิวเตอร์
Process of machine embroidery
เอกสารประกอบการอบรมปรับปรุง
Ad

Similar to Sample App: Tizengram (20)

PPTX
20151213 tokushimaapp
PDF
ライブラリを作った話
PDF
#phpmatsuri LT大会システムの中身
KEY
SnapDishの事例
PPTX
HTML5最新動向
PPTX
2014/08/10 Ippothon go編
PPTX
4th tokushimaapp
PDF
「Python言語」はじめの一歩 / First step of Python
PPT
Osoljp201210 oi swift
PDF
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
PDF
ttyrecからGIFアニメを作る話
PDF
Twitter4Jとテスト
PDF
Dive into the Cloud with our buddy, lovely PHP!
PDF
Git pyfes201207-presen
PDF
animation1.0
PDF
Dependency injection
PDF
Metahub for github
PPTX
WebRTC mediasoup on raspberrypi3
PPTX
人狼エージェント作成講座
PDF
osc_tokyo20100226
20151213 tokushimaapp
ライブラリを作った話
#phpmatsuri LT大会システムの中身
SnapDishの事例
HTML5最新動向
2014/08/10 Ippothon go編
4th tokushimaapp
「Python言語」はじめの一歩 / First step of Python
Osoljp201210 oi swift
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
ttyrecからGIFアニメを作る話
Twitter4Jとテスト
Dive into the Cloud with our buddy, lovely PHP!
Git pyfes201207-presen
animation1.0
Dependency injection
Metahub for github
WebRTC mediasoup on raspberrypi3
人狼エージェント作成講座
osc_tokyo20100226

Sample App: Tizengram