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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

7268閲覧

画像の指定箇所に四角を表示する方法

ttmm

総合スコア15

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/03/20 00:39

編集2018/03/20 07:55

前提・実現したいこと

javascriptを用いて画像の中の指定した場所に四角枠を記入したいと考えてます。
大量の画像をこのように表示したいので、
保存メモリの関係上、元画像に枠を付けたものを保存することはしたくありません。
元画像の大きさで四角を記入したい左上の点の場所と幅と高さは取得できています。

やりたいこと
イメージ説明

やり方をネットで調べたりはしているのですが
検索の方法が悪いのか出てきません。

説明がわかりにくく申し訳ありませんが
どなたかご存知の方がいらっしゃったら教えていただきたく思います。

以下追記

もう少し具体的にやりたいことをお伝えいたします。
下記の表のように、対象の箇所を枠で囲んで、それが何かを隣のセルに表示するようなことをしたいと考えています。
画像ごとに大きさや枠を表示する場所が違ってきます。そのやり方がわからなくて質問させていただきました。
イメージ説明

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

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

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

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

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

defghi1977

2018/03/20 01:53

もう少し具体的なシチュエーションを提示していただけると、より適切な回答が得られると思います.
defghi1977

2018/03/20 07:57

赤い枠を動かす操作はありますか?
ttmm

2018/03/21 23:50

表を表示した後ということですか?表示後はないです。
guest

回答3

0

ベストアンサー

JavaScriptを使ってよいのであれば, どうとでも出来るとしか. 例えば次のような方法が考えられるでしょう.

  • img要素に何らかの要素(div等)をposition:absolute等で重ねる
  • canvas要素に画像を描画し, その上にstrokeRectで四角を描画する.
  • 画像をインラインSVGで表示し, rect要素の位置を操作する.

赤い枠を動かす操作はありますか?

表を表示した後ということですか?表示後はないです。

とのことでしたら, インラインSVGによる方法がシンプルで良いかと思います.

HTML

1<svg width="200px" height="200px" viewBox="0 0 300 400"><!--viewBoxには画像のサイズを指定する--> 2 <image xlink:href="a.jpg" width="100%" height="100%"/> 3 <rect x="50" y="100" width="50" height="100" 4 fill="none" stroke="red" stroke-width="2" vector-effect="non-scaling-stroke" shape-rendering="crispEdges"/><!--枠の位置を指定する--> 5<svg> 6

投稿2018/03/20 00:48

編集2018/03/21 23:59
defghi1977

総合スコア4756

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

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

ttmm

2018/03/22 03:02

詳しく教えていただきありがとうございます。無事できそうです。
guest

0

canvasを使ったやり方が一番最初に頭に浮かんだので、canvasでやってみました。

defghi1977さんがおっしゃる通り、canvas以外にもcssやsvgでも大丈夫です!

イメージ説明

https://codepen.io/anon/pen/yKgXqX

html

1<canvas id="canvas" width="250" height="250"></canvas>

JavaScript

1var images = [ 2 // 画像1 3 { 4 url: 'http://via.placeholder.com/250x250', 5 borderTop: 70, 6 borderLeft: 50, 7 borderWidth: 150, 8 borderHeight: 100 9 }, 10 // 画像2... 11] 12 13window.onload = function() { 14 var canvas = document.getElementById("canvas"); 15 var context = canvas.getContext("2d"); 16 17 var img = document.createElement('img'); 18 img.src = images[0].url; 19 context.drawImage(img, 0, 0); 20 21 context.strokeStyle="#FF0000"; 22 context.strokeRect( 23 images[0].borderLeft, 24 images[0].borderTop, 25 images[0].borderWidth, 26 images[0].borderHeight 27 ); 28};

投稿2018/03/20 01:52

HayatoKamono

総合スコア2415

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

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

0

svgで処理してみてはどうでしょうか?

HTML

1<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="100" height="100"> 2<image xlink:href="hoge.jpg" width="100" height="100" x="0" y="0" /> 3<rect width="50" height="50" stroke="red" stroke-width="3" fill-opacity="0" x="10" y="20"/> 4</svg>

投稿2018/03/20 01:34

yambejp

総合スコア114829

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問