jsは画像切り取り機能を実現する

jsは画像切り取り機能を実現する

この記事の例では、画像の切り取りを実現するためのjsの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

コード:

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>タイトル</title>
    <スタイル>
        .キューブ{
            高さ: 0;
            幅: 0;
            位置: 絶対;
            左: 0;
            トップ:0;
 
            ボックスのサイズ: 境界線ボックス;
            背景色: ライトシーグリーン;
            不透明度: .3;
            z-index: 99; ポインターイベント: なし;
        }
        #大きい{
            境界線: 1px 黒一色;
            高さ: 500px;
            幅: 500ピクセル;
            位置: 相対的;
            背景画像: url("img/pixel.png");
            行の高さ: 500px;
            オーバーフロー: 非表示;
            垂直位置合わせ: 中央;
            テキスト配置: 中央;
            フロート: 左;
        }
        #big>img{line-height: 500px; vertical-align: middle;
            最大高さ: 100%;
            最大幅: 100%;
            ポインタイベント: なし;
        }
        .cv{
            位置: 相対的;
            フロート: 左; 境界線: 2px 実線 lightseagreen;
        }
    </スタイル>
    <スクリプト>
        count=0とします。c、b、d、p1、p2、cv、cx、img、pとします。
        window.onload = 関数(){
            c = document.querySelectorAll(".cube");
            b = document.getElementById("大きい");
            cv = ドキュメント。getElementById("c");
            cx = cv.getContext('2d');
            img = 新しい画像();
            d = b.querySelector("img");
            画像を拡大
            img.onload=関数(){
                cx.drawImage(画像, 0,0,500,500,0,0,500,500);
               p = img.width / b.querySelector("img").width;
               コンソールにログ出力します。
            }
             p1={
                 x:0,
                 年:0
             };
            p2={
                x:0,
                年:0
            };
            b.addEventListener("クリック",関数(e){
                カウント++;
                if(count===1){
                    p1.x = e.offsetX;
                    p1.y = e.offsetY;
                    p2.x = e.offsetX;
                    p2.y = e.offsetY;
                    f2();
                    f4();
                }
                if(count===2){
                    p2.x = e.offsetX;
                    p2.y = e.offsetY;
                    描画メソッド
                 }
            });
            関数f1(){
                c[0].style.height=p2.y+"px";
                c[1].style.height=p2.y+"px";
                c[2].style.height=p2.y+"px";
                c[3].style.top=p2.y+"px";
                c[4].style.top=p2.y+"px";
                c[3].style.height=(p1.y-p2.y)+"px";
                c[4].style.height=(p1.y-p2.y)+"px";
                c[5].style.top=p1.y+"px";
                c[6].style.top=p1.y+"px";
                c[5].style.height=(b.offsetHeight-p1.y)+"px";
                c[6].style.height=b.offsetHeight-p1.y+"px";
                c[7].style.top=p1.y+"px";
                c[7].style.height=(b.offsetHeight-p1.y)+"px";
            }
            関数f2(){
                c[0].style.height=p1.y+"px";
                c[1].style.height=p1.y+"px";
                c[2].style.height=p1.y+"px";
                c[3].style.top=p1.y+"px";
                c[4].style.top=p1.y+"px";
                c[3].style.height=(p2.y-p1.y)+"px";
                c[4].style.height=(p2.y-p1.y)+"px";
                c[5].style.top=p2.y+"px";
                c[6].style.top=p2.y+"px";
                c[5].style.height=(b.offsetHeight-p2.y)+"px";
                c[6].style.height=b.offsetHeight-p2.y+"px";
                c[7].style.top=p2.y+"px";
                c[7].style.height=(b.offsetHeight-p2.y)+"px";
            }
            関数f3(){
                c[0].style.width=p2.x+"px";
                c[1].style.left=p2.x+"px";
                c[1].style.width=(p1.x-p2.x)+"px";
                c[2].style.left=p1.x+"px";
                c[2].style.width=(b.offsetWidth-p1.x)+"px";
                c[3].style.width=p2.x+"px";
                c[4].style.left=p1.x+"px";
                c[4].style.width=(b.offsetWidth-p2.x)+"px";
                c[5].style.width=p2.x+"px";
                c[6].style.left=p2.x+"px";
                c[6].style.width=(p1.x-p2.x)+"px";
                c[7].style.left=p1.x+"px";
                c[7].style.width=(b.offsetWidth-p1.x)+"px";
            }
            関数f4(){
                c[0].style.width=p1.x+"px";
                c[1].style.left=p1.x+"px";
                c[1].style.width=(p2.x-p1.x)+"px";
                c[2].style.left=p2.x+"px";
                c[2].style.width=(b.offsetWidth-p2.x)+"px";
                c[3].style.width=p1.x+"px";
                c[4].style.left=p2.x+"px";
                c[4].style.width=(b.offsetWidth-p2.x)+"px";
                c[5].style.width=p1.x+"px";
                c[6].style.left=p1.x+"px";
                c[6].style.width=(p2.x-p1.x)+"px";
                c[7].style.left=p2.x+"px";
                c[7].style.width=(b.offsetWidth-p2.x)+"px";
            }
            b.addEventListener("mousemove",関数(e){
                if(count===1){
                    p2.x = e.offsetX;
                    p2.y = e.offsetY;
                     p2.y<p1.yの場合{
                        f1();
                     }それ以外{
                         f2();
                     }
 
                    p2.x<p1.xの場合{
                        f3();
                    }それ以外{
                        f4();
                     }
 
                 }
            })
 
        }
        関数myDraw(){
            cx.clearRect(0,0,500,500);
            w=p1.x-p2.xとします。
            w<0の場合{
                w=-w;
            }
            w*=p;
            h=p1.y-p2.yとします。
            h<0の場合{
                h=-h;
            }
            h*=p;
            p1.x<p2.xの場合{
                p1.x = (p1.xb.querySelector ("img").offsetLeft) * p;
            }それ以外{
                p1.x = (p2.xb.querySelector ("img").offsetLeft) * p;
            }
            p1.y<p2.yの場合{
                p1.y = (p1.yb.querySelector("img").offsetTop)*p;
            }それ以外{
                p1.y = (p2.yb.querySelector("img").offsetTop)*p;
            }
            cx.drawImage(画像,
                p1.x、p1.y、
                幅、高さ、0、0、500、500);
            0 の場合
            p1.y=0;
            0 を返します。
            p2.y=0;
        }
    </スクリプト>
 
 
</head>
<本文>
 
<div
id="big">
    <!-- 8 div カバー-->
    <div class="cube"></div>
    <div class="cube"></div>
    <div class="cube"></div>
    <div class="cube"></div>
    <div class="cube"></div>
    <div class="cube"></div>
    <div class="cube"></div>
    <div class="cube"></div>
    <img src="img/katy2.jpg" alt=""/>
</div>
<div class="cv">
    <キャンバスid="c" 高さ="500" 幅="500">
 
    </キャンバス>
</div>
</本文>
</html>

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

以下もご興味があるかもしれません:
  • アバター画像の切り取りと拡大縮小、および非リフレッシュ画像アップロード方法を実現する js
  • JavaScript を使用した画像カット効果の例
  • JavaScript 画像切り取り効果(虫眼鏡)

<<:  MySQL外部キーの基本的な機能と使用方法の詳細な説明

>>:  VMWare を使用して Windows 上で Linux 環境を構築する手順 (画像とテキスト)

推薦する

Vueはユーザー名が使用可能かどうかの検証を実装します

この記事では、ユーザー名が使用可能かどうかを確認するためのVueの具体的なコードを例として紹介します...

CSS トップに戻る コード例

最近のウェブサイトのほとんどはページが長く、4 画面または 5 画面の長さのものもあれば、2 画面ま...

Alibaba Cloud で静的ウェブサイトを素早く構築する方法

序文:ジュニアプログラマーとして、私は自分自身の個人ウェブサイトを構築し、それを他の人に見せることを...

Portainer を使用して複数の Docker コンテナ環境を管理する方法を説明します。

目次Portainerは複数のDockerコンテナ環境を管理します2. Dockerを管理する2.1...

Raspberry Pi 4 に Ubuntu 19.10 をインストールするための詳細なチュートリアル

以前、raspbian で実行したときに opencv の一部の依存関係をパッケージ化できず、一部の...

MySQL のデッドロックとデータベースおよびテーブル シャーディングの問題の詳細な説明

MySQL 運用上の問題点を記録します。ビジネスシナリオと問題の説明外部インターフェースをリクエスト...

MySQL データ型 DECIMAL(N,M) における N と M の意味の詳細な説明

同僚から、MySQL データ型 DECIMAL(N,M) の N と M の意味を尋ねられました。言...

HTML ページ ヘッダー コード例の詳細な説明

知識ポイント1: ヘッダー情報にWebページのベースURLを設定するベース URL の本質は、ハイパ...

CSS継承方法

次の背景画像を持つ div があるとします。 次の反射効果を作成します。 方法はたくさんありますが、...

Linux コマンドラインのワイルドカードとエスケープ文字の実装

ハードディスクのファイル属性のバッチ表示など、特定の種類のファイルに対してバッチ操作を実行する場合、...

CentOS7 で docker を使用して Apollo 構成センターをデプロイする実装

Apollo オープンソース アドレス: https://github.com/ctripcorp/...

Dockerコンテナ間の通信と外部ネットワーク通信の操作

コンテナ間の通信1. コンテナのネットワーク共有このモードの Docker コンテナはネットワーク ...

img usemap 属性 中国地図リンク

HTML img タグ: Web ページに導入される画像を定義します。興味深い usemap 属性も...

VUE ユニアプリテンプレート構文についての簡単な説明

1.v-bind(略称:)コンポーネント プロパティのデータで定義されたデータ変数を使用するか、コン...

MySql データ型チュートリアル例の詳細な説明

目次1. 概要2. MySQLデータ型の詳細な説明1) 文字列型2) 整数型3) 浮動小数点型4) ...