js キャンバスは角丸画像を実現します

js キャンバスは角丸画像を実現します

この記事では、角を丸くするためのjsキャンバスの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

角の丸い画像のコード実装:

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>タイトル</title>
</head>
<body style="background: rgba(199,237,204,1)">
 
<div style="display:flex; flex-direction: row">
 
    <!-- スタイルを使用してキャンバスの幅と高さを設定すると、描画されたコンテンツが Firefox 上で垂直方向に伸びます。 。 。 -->
    <canvas id="drawing" width="400px" height="400px">描画するキャンバス</canvas>
 
    <pre id="コンテナ" style="margin: 10px"/>
 
    <img src=//img.jbzj.com/file_images/article/202109/202191115608734.jpg>
</div>
</本文>
<script type="text/javascript">
 
    window.onlοad = 関数 () {
        var 描画 = document.getElementById('描画');
 
        描画コンテキストを取得する場合
            print('サポート')
            RoundRectFunc() を追加します。
            var context = drawing.getContext('2d');
            描画(コンテキスト);
 
        } それ以外 {
            print('not') を出力します。
        }
    }
 
 
    関数draw(コンテキスト) {
        context.fillStyle = '赤';
 
        var image = document.images[0];
 
        context.roundRect(0,0,image.width/2,image.height/2,30,true)
 
        context.globalCompositeOperation='ソースイン';
        context.drawImage(画像、0、0、画像の幅/2、画像の高さ/2)
        // toImage();
 
    }
 
    関数addRoundRectFunc() {
        CanvasRenderingContext2D.prototype.roundRect =
            関数 (x, y, 幅, 高さ, 半径, 塗りつぶし, ストローク) {
                if (typeof ストローク == "未定義") {
                    ストローク = true;
                }
                if (typeof radius === "undefined") {
                    半径 = 5;
                }
                このメソッドは、次のようになります。
                this.moveTo(x + 半径, y);
                this.lineTo(x + 幅 - 半径, y);
                this.quadraticCurveTo(x + 幅, y, x + 幅, y + 半径);
                this.lineTo(x + 幅、y + 高さ - 半径);
                this.quadraticCurveTo(x + 幅、y + 高さ、x + 幅 - 半径、y + 高さ);
                this.lineTo(x + 半径, y + 高さ);
                this.quadraticCurveTo(x, y + 高さ, x, y + 高さ - 半径);
                this.lineTo(x, y + 半径);
                this.quadraticCurveTo(x, y, x + 半径, y);
                this.closePath();
                if (ストローク) {
                    この.stroke();
                }
                if (fill) {
                    これを塗りつぶします。
                }
            };
    }
 
    関数toImage() {
        var imageUri = drawing.toDataURL('image/png');
        var imageTag = document.createElement('img');
        imageTag.style = '余白:10px;幅:200px;高さ:200px'
        イメージタグ.src = イメージUri;
        document.body.appendChild(画像タグ)
    }
 
    関数 print(txt) {
        document.getElementById("コンテナ").innerHTML += ('\n') + txt;
    }
 
    document.body.onclick = 関数(){
        ウィンドウの場所を再読み込み()
    }
    console.log = 印刷;
 
 
</スクリプト>
 
 
</html>

効果画像:

小さなコードを追加します: キャンバスは角が丸い画像 (アバターなど) を生成します

円画像(ctx, 画像, x, y, r) {
    ctx.save();
    var d = 2 * r;
    var cx = x + r;
    var cy = y + r;
    ctx.arc(cx, cy, r, 0, 2 * Math.PI);
    ctx.clip();
    ctx.drawImage(画像, x, y, d, d);
    ctx.restore();
  }

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ドラッグ可能な美しい丸い角の特殊効果ポップアップレイヤーの完全な例を実現するための JS+CSS
  • 抽象的な CSS 丸角効果を js で実装しました!!
  • js を使用して CSS の丸い角を生成および更新する

<<:  Centos7 構成 fastdfs および nginx 分散ファイル ストレージ システムの実装プロセス分析

>>:  Linuxで同一ファイルを見つける方法

推薦する

Centos8.3、dockerデプロイメントspringbootプロジェクトの実際のケース分析

導入現在、k8s は非常に人気があり、それについて学ぶために本を購入しました。しかし、k8s では数...

XHTML CSS ページをプリンタ ページに変換する

<br />これまで、Web ページのプリンタ対応バージョンを作成するには、印刷したとき...

Linx awk入門チュートリアルの詳細な説明

Awk はテキスト ファイルを処理するためのアプリケーションであり、ほぼすべての Linux システ...

docker runとstartの違い

docker における実行と開始の違いDocker run はミラーイメージを指定します。そしてdo...

Docker で FastDFS ファイル システムを構築する (マルチイメージ チュートリアル)

目次FastDFSについて1. 画像を検索する2. イメージをインストールする3.1. 必要なディレ...

Mybatis ページングプラグイン pageHelper の詳細な説明と簡単な例

Mybatis ページングプラグイン pageHelper の詳細な説明と簡単な例動作フレームワーク...

VMware での Ubuntu と Windows 間のファイル共有

この記事では、VMware 環境下で Ubuntu と Windows 間でファイルを共有する方法を...

ElementUIはドロップダウンオプションと複数選択ボックスのサンプルコードを実装します

目次ドロップダウン複数選択ボックスアップグレード - すべてのオプションを追加改訂と改善を求める製品...

Ckeditor + Ckfinderを使用したJavaScriptファイルアップロードケースの詳細な説明

目次1. 準備2. 減圧3. 統合を開始する1. 準備Ckeditor_4.5.7_full + C...

行の高さと垂直方向の配置に関する包括的な理解

前の単語line-height、font-size、vertical-align は、インライン要素...

jQueryはアコーディオンの小さなケースを実装します

この記事では、アコーディオンを実装するためのjQueryの具体的なコードを参考までに紹介します。具体...

ElementUI のネストされたテーブルに基づいて複数選択を実装するためのサンプル コード

序文:私は友人のプロジェクトのバグを修正するのを手伝ったのでこれを書きました。この関数を書くのは初め...

mysql 基本操作文コマンドの詳細な説明

1. MySQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...

Docker は MySQL をインストールし、中国語の文字化けの問題を解決します

目次1. MySQLイメージを取得する2. ダウンロードが完了したか確認する3. MySQLはローカ...

docker compose を使用して fastDFS ファイル サーバーを構築する方法

前回の記事では、docker compose を使用して FastDfs ファイル サーバーをインス...