🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

978閲覧

クリックした画像のサイズ(バイト)やファイルタイプの取得方法

ringoame49

総合スコア46

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/09/28 07:39

編集2019/09/29 11:08

質問失礼します。

タイトル通りですがどうしても方法がわかりません。
どの様に記述すればクリックした画像のサイズ(何バイト)とタイプ(jpgやpng等)を取得できるのでしょうか?
現在はこのように記述しております。

HTML

<div class="file"><a href="#"><img src="images/sample.jpg"></a></div> <dl> dt>ファイル容量: </dt> <dd id="file_capa"></dd> <dt>ファイルタイプ: </dt> <dd id="file_type"></dd> <dt>サイズ: </dt> <dd id="file_size"></dd> </dl>

js

$(".file a").on('click', function(){ var $this_children = $(this).children('img'); var img = new Image(); img.src = $this_children.attr('src'); var nw = img.width; var nh = img.height; $("#file_size").text(nw + '×' + nh + 'px'); var fileType = img.type; //これはダメでした var fileCapa = img.size; //これはダメでした $("#file_type").text(fileType); $("#file_capa").text(fileCapa); return false; function filesize(url) { var req = this.window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); if (!req) { throw new Error('XMLHttpRequest not supported'); } req.open('HEAD', url, false); req.send(null); if (!req.getResponseHeader) { try { throw new Error('No getResponseHeader!'); } catch (e) { return false; } } else if (!req.getResponseHeader('Content-Length')) { try { throw new Error('No Content-Length!'); } catch (e2) { return false; } } else { return req.getResponseHeader('Content-Length'); } } });

他にfilesize(img)等も試しましたがダメでした。

参考先サイト等でも教えていただけましと助かります。

よろしくお願いいたします。

追記

製作者が自作したメソッドは記述しております。

そして
filesize(img);

var fileSrc= $this_children.attr('src');
var fileCapa = filesize(fileSrc);
$("#file_capa").text(fileCapa);
とした場合、画面にはfalse、
エラーは下記の内容が出ます。

[Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check

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

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

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

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

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

guest

回答2

0

ベストアンサー

CORSに引っかからないならfetchしてみては?

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 [].forEach.call(document.querySelectorAll('img'),x=>{ 4 x.addEventListener('click',e=>{ 5 var t=e.target; 6 fetch(t.src).then(res=>new Promise(resolve=>resolve(res.blob())).then(blob=>new Object({ 7 type:res.headers.get("content-type"), 8 size:blob.size, 9 width:t.naturalWidth, 10 height:t.naturalHeight, 11 }))).then(console.log); 12 }); 13 }); 14}); 15</script> 16<img src="1.jpg"> 17<img src="2.jpg">

投稿2019/09/30 01:55

編集2019/09/30 05:03
yambejp

総合スコア116694

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

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

ringoame49

2019/10/01 10:19

ご回答いただきありがとうございます。 確かにconsole上には私の望む値が表示されていました。 しかし教えていただいた内容を100%理解できている訳ではないので教えていただいた内容を基にわからない部分は勉強し、ほかにも実装させたい機能があるので応用して使用させていただきます! この度は本当にありがとうございましたm(__)m
guest

0

ファイルサイズを取得する方法はここに載ってましたが、結構めんどくさそうでした
JavaScriptで画像のファイルサイズを取得する

拡張子を取得する方法は、

  • ファイル名末尾から取得するだけでいいのか
  • 拡張子に頼らずに正しいファイルタイプを取得したいのか

のどちらなのかによって変わってくると思いますが、いかがでしょう。

他にもこの辺が参考になりそうです
HTML5のFile APIでローカルファイル情報取得してやんよ!!!

※検索すれば結構出てきます

投稿2019/09/28 08:46

siruku6

総合スコア1382

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

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

ringoame49

2019/09/28 09:10 編集

ご回答ありがとうございます。 私もJavaScriptで画像のファイルサイズを取得するの方は見ました。 そこでvar fileCapa = filesize(img);を試しましたがダメでした。 HTML5のFile APIでローカルファイル情報取得してやんよ!!!はローカルファイルの情報を表示するのではないのでしょうか? 私の望みはweb上にimgtタグで表示されている画像のサイズやタイプを取得し表示したいです。 タイプの取得は拡張子に頼らずに正しいファイルタイプを取得したいのかになります。 結構検索しましたが私のレベルが低いのもあり中々解決できないです。
siruku6

2019/09/28 09:16

「JavaScriptで画像のファイルサイズを取得する」を見たところ、requestを投げるfilesizeというメソッドを実装しているように見えるのですが、それもすでに実装されていますか?
ringoame49

2019/09/28 09:54

var fileCapa = filesize(img); $("#file_capa").text(fileCapa); で試していますがダメでした。
siruku6

2019/09/28 14:40

あのfilesizeというメソッドは、記事の製作者が自作したメソッドなのですが、それも自分自身のコードに実装済みであれば、質問文のソースにも書いておいた方がい良いと思います。 また、もし既にエラーも確認済みであれば、エラー内容も記載しておかないと、他の方もそれ以上アドバイスするのは難しいと思います。
ringoame49

2019/09/29 11:09 編集

等もご回答ありがとうございます。 製作者が自作したメソッドは記述しております。 そして filesize(img); や var fileSrc= $this_children.attr('src'); var fileCapa = filesize(fileSrc); $("#file_capa").text(fileCapa); とした場合、画面にはfalse、 エラーは下記のように出ます。 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
siruku6

2019/09/29 14:14

ここまで情報が掲載されていれば、わかる人にはわかると思います、、、 申し訳ないですが、私はこの処理の経験はないため、これ以上は力になれそうにないです、、
ringoame49

2019/09/30 02:59

とんでもないです! ご丁寧にご回答ありがとうございました! 次から質問するときはもっと細かく書きます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問