質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

11317閲覧

1つの大きな画像をタイル上に分割し、HTMLで表示させるジェネレーター

ashly

総合スコア119

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2015/11/09 09:00

1枚の大きな画像をタイル上に分割したものを、HTML上で並べ1枚の画像にみえるようにしたいのですが、簡単なジェネレーターなどはあるのでしょうか。

以下がサンプルサイトです。

https://http2.golang.org/gophertiles

※もともとは1枚の画像をこのように32×32の画像に分割しHTML上で並べて表示しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

html5 canvasdrawImagetoDataURLを利用してみるのはどうでしょうか?

以下の例では、javascriptで<img>要素から分割した<img>要素を動的に生成します。

余白なしDEMO

イメージ説明

javascript

1var sprite= {width:32,height:32} 2 3var image= new Image 4image.crossOrigin= 'Anonymous' 5image.src= 'https://cdn.rawgit.com/nagadomi/otama/master/image/lena.jpg' 6image.onload= function(){ 7 var canvas= document.createElement('canvas') 8 canvas.width= sprite.width 9 canvas.height= sprite.height 10 11 var context= canvas.getContext('2d') 12 for(var i=0; i*sprite.height<image.height; i++){ 13 for(var j=0; j*sprite.width<image.width; j++){ 14 context.drawImage( 15 image,j*sprite.width,i*sprite.height, 16 sprite.width,sprite.height, 17 0,0, 18 sprite.width,sprite.height 19 ) 20 21 var spriteElement= new Image 22 spriteElement.src= canvas.toDataURL() 23 24 document.querySelector('#container').appendChild(spriteElement) 25 } 26 } 27}

補足:stackoverflow上でもsprite、tileなどで検索するとjsを使わずcssを使用した例などの回答も見つけられましたが、質問にピンポイントなライブラリは見つかりませんでした。
EaselJSenchant.jsなどのSpriteが回答に近いですが、これはゲーム用に最適化されていて、動的に画像を作る機能がメソッドとして用意されていないように見えました。また両者とも、<canvas>を使うことが前提です。

投稿2015/11/09 23:39

編集2015/11/09 23:49
horse_n_deer

総合スコア452

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ashly

2015/11/10 02:13

ありがとうございます。 こんな方法があるんですね。 しかし私の質問のしかたがアバウト過ぎたのかもしれません。 じつは、パフォーマンステスト目的であえて32×32の細かい画像を生成して分割された画像分ブラウザからリクエストを投げさせると言うことが目的でした。 こちらの場合JSで操作しているためリクエスト自体が画像1つ1つに対してではない状況です。※本来負荷を減らすためには大変いいことなのですが。。。 しかしながら、画像の32・32のタイル上に分割ということは行えておりますので、最悪これらの画像を全て保存し手動でHTMLのコーディングを行ってならべようかと考えています。
think49

2015/11/10 03:28

To: redbox さん 一つの画像ファイルをHTTPリクエストする方がパフォーマンスが上がると思うのですが、PCの負荷テストが目的なのでしょうか。
ashly

2015/11/10 04:20

think49さん はいそうです。この画像はサーバーのパフォーマンステスト用で利用することが目的です。
guest

0

To: redbox さん

ジェネレータがどのようなものを希望されているのかわかりませんが、JavaScriptでコードを書くなら、ご希望の動作は「img要素ノードを指定回数生成⇒br要素ノードを生成」を繰り返せば可能ですね。
createDocumentFragment, createElement, appendChild を利用してみてはどうでしょうか。

投稿2015/11/10 04:43

think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ashly

2015/11/17 08:42

ありがとうございます。 JAVASCRIPTでコードを生成することも検討したのですが、画像自体をImagemagicなどで分割した連番のものを、ひとまず手動でコーディングしてならべることにしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問