Submit Search
HTML5のCanvas入門 - Img画像を編集してみよう -
15 likes
16,429 views
Toshio Ehara
HTML5+α @福岡 - 第21回 2013/12/18(水) 19:30 LT資料
Technology
Entertainment & Humor
Read more
1 of 30
Download now
Downloaded 23 times
1
2
3
4
5
6
Most read
7
8
9
10
Most read
11
12
13
14
15
16
17
Most read
18
19
20
21
22
23
24
25
26
27
28
29
30
More Related Content
PPTX
공간정보거점대학 1.geo server_고급과정
BJ Jang
PDF
[132] rust
NAVER D2
PPTX
Addressables で大量のリソース管理・困りどころと解消法
Kenta Nagai
PDF
Icra2020 v1
robotpaperchallenge
PPTX
CloudFront経由でのCORS利用
Yuta Imai
PDF
프론트엔드 개발자를 위한 Layer Model
Han Lee
PDF
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
Google Cloud Platform - Japan
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
Hiroshi Tokumaru
공간정보거점대학 1.geo server_고급과정
BJ Jang
[132] rust
NAVER D2
Addressables で大量のリソース管理・困りどころと解消法
Kenta Nagai
Icra2020 v1
robotpaperchallenge
CloudFront経由でのCORS利用
Yuta Imai
프론트엔드 개발자를 위한 Layer Model
Han Lee
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
Google Cloud Platform - Japan
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
Hiroshi Tokumaru
What's hot
(20)
PPTX
SPARQLによるLODの検索@第4回LODとオントロジー勉強会-
Kouji Kozaki
PDF
Unreal Engine 4 Education 1 基礎の基礎・最初は何から学ぶ?
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
Goで実装した UPSIDERの決済金額リミット機能
Miki Masumoto
PPTX
Proj4를 이용한 좌표계 변환
BJ Jang
PDF
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
UnityTechnologiesJapan002
PDF
QGIS를 활용한 공간분석 입문(1일 6시간)
Byeong-Hyeok Yu
PDF
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Imajin Kawabe
PDF
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk
PDF
TDPT + VMCプロトコル on WebRTC
hironroinakae
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
PPTX
iPad LiDARでエンジニアカフェを3Dスキャン
Takashi Yoshinaga
PDF
文献紹介:CutDepth: Edge-aware Data Augmentation in Depth Estimation
Toru Tamaki
PPTX
공간SQL을 이용한 공간자료분석 기초실습
BJ Jang
PDF
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII
PDF
SPARQLでマッシュアップ-LOD活用のための技術紹介-
uedayou
PPTX
20170706 04 bridgepointでモデル駆動を実践する
Yuki Tsuchitoi
PDF
입문 Visual SLAM - 5장 카메라와 이미지
jdo
PDF
PHP 5.5ネーティブキャッシュの話
Rui Hirokawa
PDF
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
Kitsukawa Yuki
PPTX
GraphQLのsubscriptionで出来ること
Shingo Fukui
SPARQLによるLODの検索@第4回LODとオントロジー勉強会-
Kouji Kozaki
Unreal Engine 4 Education 1 基礎の基礎・最初は何から学ぶ?
エピック・ゲームズ・ジャパン Epic Games Japan
Goで実装した UPSIDERの決済金額リミット機能
Miki Masumoto
Proj4를 이용한 좌표계 변환
BJ Jang
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
UnityTechnologiesJapan002
QGIS를 활용한 공간분석 입문(1일 6시간)
Byeong-Hyeok Yu
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Imajin Kawabe
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk
TDPT + VMCプロトコル on WebRTC
hironroinakae
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
iPad LiDARでエンジニアカフェを3Dスキャン
Takashi Yoshinaga
文献紹介:CutDepth: Edge-aware Data Augmentation in Depth Estimation
Toru Tamaki
공간SQL을 이용한 공간자료분석 기초실습
BJ Jang
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII
SPARQLでマッシュアップ-LOD活用のための技術紹介-
uedayou
20170706 04 bridgepointでモデル駆動を実践する
Yuki Tsuchitoi
입문 Visual SLAM - 5장 카메라와 이미지
jdo
PHP 5.5ネーティブキャッシュの話
Rui Hirokawa
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
Kitsukawa Yuki
GraphQLのsubscriptionで出来ること
Shingo Fukui
Ad
Similar to HTML5のCanvas入門 - Img画像を編集してみよう -
(20)
PPTX
JavaScriptで『漫画カメラ』的画像加工
Masayuki Maekawa
PDF
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
Hiroaki Wakamatsu
PDF
SVG MANIAX Ver.2 - Mars vanilla
Naoki Matsuda
PDF
JavaScriptでいいじゃなイカ
Yuuichi Akagawa
PDF
Native x Webでいいとこどり開発 ~ピグトーク~
Kazunari Hara
PDF
レスポンシブWebデザイン【発展編】
Yasuhito Yabe
PDF
静岡Developers勉強会 HTML5&CSS3
yaju88
PDF
Canvas勉強会
Tsutomu Kawamura
PDF
メディア芸術基礎 II Canvas + Javascriptで図形を描く
Atsushi Tadokoro
PDF
Css3でキャラクターアニメーションに挑戦してみた
Shinichi Sato
KEY
東の方からきました@鹿駆動勉強会
Kazuyuki Honda
PPTX
Imagemagickknowhow
Yo Ya
PDF
SVG MANIAX - CSS Nite After dark7
Naoki Matsuda
PDF
スマホにおけるWebGL入門
Yohta Kanke
PDF
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
Atsushi Tadokoro
PPTX
GoImagickThumbnail
Yo Ya
PDF
Creators'night#13 tech#2今井
Daisuke Imai
PDF
WordBench Nagoya 201601
kuma2515
PDF
HTML5の前のJavaScript入門
Hiroki Toyokawa
PPTX
go-thumber-imagick
Yo Ya
JavaScriptで『漫画カメラ』的画像加工
Masayuki Maekawa
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
Hiroaki Wakamatsu
SVG MANIAX Ver.2 - Mars vanilla
Naoki Matsuda
JavaScriptでいいじゃなイカ
Yuuichi Akagawa
Native x Webでいいとこどり開発 ~ピグトーク~
Kazunari Hara
レスポンシブWebデザイン【発展編】
Yasuhito Yabe
静岡Developers勉強会 HTML5&CSS3
yaju88
Canvas勉強会
Tsutomu Kawamura
メディア芸術基礎 II Canvas + Javascriptで図形を描く
Atsushi Tadokoro
Css3でキャラクターアニメーションに挑戦してみた
Shinichi Sato
東の方からきました@鹿駆動勉強会
Kazuyuki Honda
Imagemagickknowhow
Yo Ya
SVG MANIAX - CSS Nite After dark7
Naoki Matsuda
スマホにおけるWebGL入門
Yohta Kanke
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
Atsushi Tadokoro
GoImagickThumbnail
Yo Ya
Creators'night#13 tech#2今井
Daisuke Imai
WordBench Nagoya 201601
kuma2515
HTML5の前のJavaScript入門
Hiroki Toyokawa
go-thumber-imagick
Yo Ya
Ad
More from Toshio Ehara
(20)
PDF
iPhoneアプリを Javaで書くよ?
Toshio Ehara
PDF
Java初心者勉強会(2015/08/07)資料
Toshio Ehara
PDF
Java電卓勉強会資料
Toshio Ehara
PDF
BABELで、ES2015(ES6)を学ぼう!
Toshio Ehara
PDF
AngularJSで業務システムUI部品化
Toshio Ehara
PDF
traceur-compilerで ECMAScript6を体験
Toshio Ehara
PDF
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
PDF
AngularJS入門の巻2
Toshio Ehara
PDF
JenkinsをJava開発でこんな感じで使っています
Toshio Ehara
PDF
AngularJS入門の巻
Toshio Ehara
PDF
AngularJS+TypeScriptを試してみた。
Toshio Ehara
PDF
AngularJSのDirectiveで俺俺タグつくっちゃお
Toshio Ehara
PDF
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
Toshio Ehara
PDF
福岡のIT勉強会情報の集め方(LT資料)
Toshio Ehara
PDF
BACKBONE.JSによるWebアプリケーション開発について
Toshio Ehara
PDF
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
Toshio Ehara
PDF
JavaScriptのテストコード 一緒に勉強しませんか??
Toshio Ehara
PDF
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
Toshio Ehara
PDF
LT Leap MotionとJavaScriptで遊ぼう!
Toshio Ehara
PDF
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
Toshio Ehara
iPhoneアプリを Javaで書くよ?
Toshio Ehara
Java初心者勉強会(2015/08/07)資料
Toshio Ehara
Java電卓勉強会資料
Toshio Ehara
BABELで、ES2015(ES6)を学ぼう!
Toshio Ehara
AngularJSで業務システムUI部品化
Toshio Ehara
traceur-compilerで ECMAScript6を体験
Toshio Ehara
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
AngularJS入門の巻2
Toshio Ehara
JenkinsをJava開発でこんな感じで使っています
Toshio Ehara
AngularJS入門の巻
Toshio Ehara
AngularJS+TypeScriptを試してみた。
Toshio Ehara
AngularJSのDirectiveで俺俺タグつくっちゃお
Toshio Ehara
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
Toshio Ehara
福岡のIT勉強会情報の集め方(LT資料)
Toshio Ehara
BACKBONE.JSによるWebアプリケーション開発について
Toshio Ehara
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
Toshio Ehara
JavaScriptのテストコード 一緒に勉強しませんか??
Toshio Ehara
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
Toshio Ehara
LT Leap MotionとJavaScriptで遊ぼう!
Toshio Ehara
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
Toshio Ehara
HTML5のCanvas入門 - Img画像を編集してみよう -
1.
HTML5のCanvas入門 - Img画像を編集してみよう 2013/12/18(水)
HTML5+α @福岡 - 第21回 LT資料 Photo by Web制作向け無料写真素材/ぱくたそ http://www.pakutaso.com
2.
自己紹介です ======== 江原と申します。(@itokami1123) 福岡で業務アプリをJavaScriptで作って暮らしてます。 来年からはJava屋に転職。今は、名刺無いです…。 こんな野望が持ってます。 ・業務系WebアプリのUIをモット使いやすくしたい! ・JavaとJavaScriptを仲良くさせたい! ・コミュニティの力で福岡を一つに!景気上昇↑雇用拡大↑ ・生涯、福岡でエンジニアしたい!
3.
本日の内容 ======== HTML5のCanvas機能を使うとImgタグの画像編集が サーバの力を借りなくても クライアント(JavaScript)側で行うことが出来ます。 簡単ですがその手順や注意事項について説明させてください!
4.
( HTML5のCanvasて何?
5.
HTML5のCanvasとは ブラウザ上に図を描くための機能です。 JavaScriptで図形や画像の描画が出来ます!
6.
例えば、ブラウザに線とか引けます。 ! <canvas id="sample" width="200"
height="150"></canvas> ! var canvas = document.getElementById('sample'); ! var ctx = canvas.getContext('2d'); ! 描画対照を選択! ctx.beginPath(); ! ctx.moveTo(10, 10); ctx.lineTo(40, 40); ! ctx.stroke();
7.
例えば、ブラウザに線とか引けます。 ! <canvas id="sample" width="200"
height="150"></canvas> ! var canvas = document.getElementById('sample'); ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); 描画道具 ! Canvas 描画対照から Context ctx.moveTo(10, 10); 描画する道具を ctx.lineTo(40, 40); ! いただきます。 ctx.stroke();
8.
例えば、ブラウザに線とか引けます。 ! <canvas id="sample" width="200"
height="150"></canvas> 座標位置を設定して描画できます。 ! ! 線が引けた! var canvas = document.getElementById('sample'); ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); ! ctx.moveTo(10, 10); ctx.lineTo(40, 40); ! ctx.stroke();
9.
( ふーん、こんなんで画像編集できんの?
10.
ではCanvasで画像編集してみましょ〜!
11.
imgとCanvasの下準備…。 (512px) (512px) のpngを用意しました。 九九衰弱 -iPhoneアプリ
https://itunes.apple.com/jp/app/99suizyaku/id571962674 九九の書かれたカードでする神経衰弱ゲーム。間に合わないと爆破しちゃうぞ。 HTMLとCSSはこんな感じで用意しました。 <img id="source_img" /> <canvas id="edit_canvas" width="200" height="200" > </canvas> img{ Canvas解像度(200px) ×(200px) width: 200px; height: 200px; box-shadow: 0 2px 4px rgba( 0, 0, 0, 0.5); } canvas{ 画面に表示するサイズ width: 200px; height: 200px; box-shadow: 0 2px 4px rgba( 0, 0, 0, 0.5); }
12.
imgデータをロードして… var $img =
$('#source_img'); ! $img.load( drawCanvas ); ! $img.attr( "src", "http://jsrun.it/assets/3/F/d/Q/3FdQP.png" ); ! imgタグに 画像を設定! imgがload完了後 drawCanvas関数を呼びます。
13.
imgデータをロードしてからのCanvas描画! function drawCanvas( event){ Eventからimgタグを取得! var
$img = $( event.target), img = $img[0]; Canvas描画道具取得 var $canvas = $( "#edit_canvas"); var ctx = $canvas[0].getContext("2d"); ctx.drawImage( img, 0, 0 ); } imgデータを使ってCanvaに描画!
14.
そのまま貼付けしてみると… function drawCanvas( event){ var
$img = $( event.target), imgデータを (0,0)の位置に貼付け img = $img[0]; Canvasは 200x200なのではみでます! var $canvas = $( "#edit_canvas"); var ctx = $canvas[0].getContext("2d"); ctx.drawImage( img, 0, 0 ); } Σ (
15.
貼付け先の幅と高さを指定してあげると… function drawCanvas( event){ var
$img = $( event.target), imgデータを (0,0)の位置に img = $img[0]; 幅200px 高さ200pxで描画! var $canvas = $( "#edit_canvas"); var ctx = $canvas[0].getContext("2d"); ctx.drawImage( img, 0, 0 , 200, 200); } (
16.
爆弾だけ切り取りたい場合は… function drawCanvas( event){ var
$img = $( event.target), imgの(12,332)から幅高さ100pxを img = $img[0]; 幅200px 縦200pxで描画! var $canvas = $( "#edit_canvas"); var ctx = $canvas[0].getContext("2d"); ctx.drawImage(img, 12,332,100,100, 0,0,200,200); } (
17.
( あっ画像の向き間違えた…
18.
大丈夫!画像を回転出来ます!
19.
30度、60度、90度で回転させてみましょう〜! ctx.rotate( 30 * Math.PI
/ 180); ctx.drawImage( img, 0, 0 , 200, 200); ctx.rotate( 60 * Math.PI / 180); ctx.drawImage( img, 0, 0 , 200, 200); ctx.rotate( 90 * Math.PI / 180); ctx.drawImage( img, 0, 0 , 200, 200); ( あれっ?消えたよ..
20.
左上(0,0)を中心に回るみたいですね! ctx.rotate( 30 * Math.PI
/ 180); ctx.drawImage( img, 0, 0 , 200, 200); (0,0)
21.
だったら下の手順で行けそうですね! ①x,y座標を-100px ずらす ②90度回転! ③x,y座標を +100pxずらす (表示されるとこに移動する)
22.
さっきのイメージをコードにして… ①x,y左上に移動して.. ctx.translate( -100, -100
); ctx.rotate( 90 * Math.PI / 180); ctx.translate( 100, 100 ); ②90度回転! ③表示できる位置に戻す ctx.drawImage( img, 0, 0 , 200, 200); !?表示されない ( あれっ!?
23.
実は変換は逆に設定する必要があるのです。 ctx.translate( ctx.rotate( 100, 100 ); ③表示できる位置に戻す 90 *
Math.PI / 180); ②90度回転! ctx.translate( -100, -100 ); ①x,y左上に移動して.. ctx.drawImage( img, 0, 0 , 200, 200); \出来た/ (
24.
( せっかく加工した画像保存したいなぁ
25.
大丈夫!画像を取り出せます!
26.
Canvasの描画内容をBase64形式で取得出来ます。 var $canvas =
$( "#edit_canvas"); var ctx = $canvas[0].getContext("2d"); ctx.translate( ctx.rotate( 100, 100 ); 90 * Math.PI / 180); Base64形式で取得! ctx.translate( -100, -100 ); ctx.drawImage( img, 0, 0 , 200, 200); var base64Data = $canvas[0].toDataURL("image/png"); $('#out_img').attr( "src", base64Data); canvasタグ imgタグ この例は、作成したBase64形式のデー タをimgタグのsrcに指定しています。 文字列なのでサーバに送信してサーバ 側でPNG画像にする事も可能です。
27.
まとめ
28.
まとめ ======== ・Canvasは自由に図形を描画する事が出来ます。 ・CanvasはImgタグ画像を取り込む事が出来ます。 ・Canvasに取り込めば画像を回転したり切り取ったり出来ます。 ・画像変換の指定は逆の順番で書きましょう。 ・加工した画像 canvas.toDataURL() で取り出せます。
29.
HTML5のCanvasが使えるブラウザは結構多いと思います! うまく使えばサーバの負荷を減らす事が出来そうですね! http://fmbip.com/litmus/
30.
これで発表はおしまいです! ご清聴ありがとうございました!
Download