<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Canvas アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<atom:link href="https://nyanblog2222.com/tag/canvas/feed/" rel="self" type="application/rss+xml" />
	<link>https://nyanblog2222.com/tag/canvas/</link>
	<description>ちょっとしたことを調べているよ</description>
	<lastBuildDate>Fri, 27 Aug 2021 11:18:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://nyanblog2222.com/wp-content/uploads/2021/09/cropped-favicon-32x32.png</url>
	<title>Canvas アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<link>https://nyanblog2222.com/tag/canvas/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>【JavaScript】Canvasで複数の画像を1つのimgタグで順番に出力してみよう【HTML5】</title>
		<link>https://nyanblog2222.com/programming/javascript/1506/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1506/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 25 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[img要素]]></category>
		<category><![CDATA[画像]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1506</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />こんにちは。今回はJavaScriptでcanvas要素を使って、複数の画像を1つのimg要素へ出力する方法をご紹介します。 同じフォルダ構成＋ファイル名の画像さえあれば、コピペで再現できます！ 目次 HTMLCSSJa [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1506/">【JavaScript】Canvasで複数の画像を1つのimgタグで順番に出力してみよう【HTML5】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回はJavaScriptでcanvas要素を使って、複数の画像を1つのimg要素へ出力する方法をご紹介します。</p>



<p>同じフォルダ構成＋ファイル名の画像さえあれば、コピペで再現できます！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTML</a></li><li><a href="#toc2" tabindex="0">CSS</a></li><li><a href="#toc3" tabindex="0">JavaScript</a></li><li><a href="#toc4" tabindex="0">デモ</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTML</span></h2>



<p>今回のHTMLは至ってシンプルです。<br><strong><span style="color:#b78d4a" class="has-inline-color">img要素を作成する親div</span></strong>を記述しています。</p>



<pre class="wp-block-code html"><code>&lt;body>
    &lt;div id="result">&lt;/div>
&lt;/body></code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSS</span></h2>



<p>今回はCSSは使用していないので、不要です。<br>※ その代わりJavaScriptがしっかり目です。</p>



<h2 class="wp-block-heading"><span id="toc3">JavaScript</span></h2>



<p>JavaScriptはこちらです。<br>今回はJQueryは使っていません。</p>



<p>要所要所で、解説用にコメントを記述してみました。</p>



<pre class="wp-block-code javascript"><code>window.onload = function () {
    // 色々宣言・初期化
    var canvas = document.createElement("canvas");
    canvas.width = 0;
    canvas.height = 0;
    var images = &#91;];
    var srcs = &#91;
        'img/1.jpg',
        'img/2.jpg',
        'img/3.jpg',
        'img/4.jpg',
    ];
    var loadCount = 0;

    // Canvas上に画像を表示
    for (var i = 0; i &lt; srcs.length; i++) {
        // Imageのインスタンスを生成し、それぞれの画像を設定
        images&#91;i] = new Image();
        images&#91;i].src = srcs&#91;i];

        // 画像の読み込みが終わったら
        images&#91;i].onload = function () {
            // カウントを取る
            loadCount++;

            // 画像全てloadが終わったら
            if (loadCount === images.length) {
                // ロード後の処理
                loadProcess(images, canvas);
            }
        };
    }
};

// ロード後の処理
function loadProcess(images, canvas) {
    // 画像それぞれのサイズを計算して、canvasのサイズを設定
    setCanvasSize(images, canvas);

    // canvasをクリアにする
    let ctx = canvas.getContext('2d');
    ctx.clearRect(0, 0, canvas.width, canvas.height);

    // カンバスに画像を描画
    drowImage(images, ctx);

    // canvasを画像に変換
    canvasToImage(canvas);
}

// カンバスサイズを設定
function setCanvasSize(images, canvas) {
    for (let i = 0; i &lt; images.length; i++) {
        // 横幅は一番大きい画像に設定
        if (canvas.width &lt; images&#91;i].naturalWidth) {
            canvas.width = images&#91;i].naturalWidth;
        }
        // 高さはプラスしていく
        canvas.height += images&#91;i].naturalHeight;
    }
}

// カンバスに画像を描画
function drowImage(images, ctx) {
    var set_y = 0;
    for (let i = 0; i &lt; images.length; i++) {
        ctx.drawImage(images&#91;i], 0, set_y);
        // 前の画像分、高さをずらして表示させるため、set_yに現在の画像の高さを設定
        set_y += images&#91;i].naturalHeight;
    }
}

// canvasからImgに変換
function canvasToImage(canvas) {
    // img要素を作成
    var outputImg = document.createElement('img');
    // canvasを画像に変換
    outputImg.src = canvas.toDataURL('image/png');
    // 変換したimg要素をdiv要素の中に追加
    document.getElementById('result').appendChild(outputImg);
}</code></pre>



<h2 class="wp-block-heading"><span id="toc4">デモ</span></h2>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/canvas_img/" target="_blank">デモページはこちら</a></strong>です。<br>サイズの取得を確認できるよう、さまざまな画像を使ってみました。</p>



<h2 class="wp-block-heading"><span id="toc5">まとめ</span></h2>



<p>いかがでしたでしょうか。<br>このようなcanvasの使い方もできるんですねぇ。。。<br>色んな描画の使い方ができるので、もっと！もっと！とできるようになりたいです。<br>（ちょっとしたミニゲームっぽいのもそろそろ作ってみたい。。。）</p>



<p>今回に限った話ではないですが、実務でC#をやっておきながら、JavaScriptでオブジェクト指向の書き方が全然できておらず、猛勉強中です。</p>



<p>可読性も上げたいと思っているので、近いうちに記事にできるようしっかり勉強していきます。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1506/">【JavaScript】Canvasで複数の画像を1つのimgタグで順番に出力してみよう【HTML5】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1506/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
