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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

exif

Exifは、デジタルカメラで撮影した画像データに、撮影時の状況などさまざまな情報(メタデータ)を添付して保存する画像ファイル形式の規格です。この付加情報により、データ管理や機器同士のデータ交換、最適な設定の出力などを行うことができます。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

0回答

1622閲覧

Webブラウザにスマホから投稿した写真のEXIF情報が消えてしまう問題を解決したいです

kankun2050

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

exif

Exifは、デジタルカメラで撮影した画像データに、撮影時の状況などさまざまな情報(メタデータ)を添付して保存する画像ファイル形式の規格です。この付加情報により、データ管理や機器同士のデータ交換、最適な設定の出力などを行うことができます。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2020/07/02 00:32

編集2020/07/02 01:02

前提・実現したいこと

djangoを使って、投稿した写真のEXIF情報をもとにGoogleMap上にその写真を撮影した位置をマーキングするWebアプリを開発しております。

発生している問題・エラーメッセージ

実際に作ってみたところ、スマホで撮影した写真を一旦PCに移動させて、PCから投稿した場合は正しく位置が表示されているのですが、スマホから直接投稿した場合には位置情報が消えているのか正しく表示できません。

色々調べたところ、Webブラウザに写真を直接アップするとEXIF情報が消えることがあるようなのですが、PCに移行せずとも、スマホから直接アップしてもEXIF情報を消さずに参照できる方法はありませんでしょうか?

該当のソースコード

views

1def post(request): 2 if request.method == 'POST': 3 4 image = request.FILES['images'] #画像の取得 5 6 msg = Message() #メッセージに格納 7 msg.upimage = image 8 9     #写真のEXIF情報から緯度、経度を取得 10 lat,lon = get_exif_of_image(image) 11 msg.latitude = lat 12 msg.longitude = lon 13 14 msg.save() 15 16 messages.success(request,'新しいメッセージを投稿しました') 17 18 return redirect(to='/maptest') 19 20 else: 21 form = PostForm(request.user,request.FILES) 22 23  params={ 24 'login_user':request.user, 25 'form':form, 26 } 27 return render(request,'maptest/post.html',params) 28 29 30#画像から位置情報を取得する関数 31def get_exif_of_image(fname): 32 im = Image.open(fname) 33 exif = im._getexif() 34 35 lat = 0 36 lon = 0 37 38 for id,value in exif.items(): 39 if id==34853: 40 N1 = value[2][0][0] 41 N2 = value[2][1][0] 42 N3 = value[2][2][0] 43 E1 = value[4][0][0] 44 E2 = value[4][1][0] 45 E3 = value[4][2][0] 46 lat = N1+(N2*60+N3)/3600 47 lon = E1+(E2*60+E3)/3600 48 49 return lat,lon

models

1from django.contrib.gis.db import models 2from django.contrib.auth.models import User 3 4class Message(models.Model): 5 owner = models.ForeignKey(User,on_delete=models.CASCADE,related_name='message_owner') 6 latitude = models.DecimalField(max_digits=9, decimal_places=6) 7 longitude = models.DecimalField(max_digits=9, decimal_places=6) 8 mes_title = models.CharField(max_length=50,default='non title') 9 upimage = models.ImageField(upload_to='images/',null=True, blank=True) 10 pub_date = models.DateTimeField(auto_now_add=True) 11 12 def __str__(self): 13 return str(self.content) + '(' + str(self.owner) + ')' 14 15 class Meta: 16 ordering = ('-pub_date',) 17

試したこと

当初、get_exif_of_image関数内でlatとlonの初期値を設定してなかったので、スマホから直接アップするとEXIF情報がとれずにエラーがでてました。
djnagoの管理ページから投稿した内容を見ると、緯度と経度に初期値が入っていたので、スマホから直接アップした場合はEXIFが消えてる、もしくは参照できてないのでは、と想定しました。

追記:
スマホはiphoneでOSはiOS13.5.1です。カメラの位置情報サービスはオンにしています。
位置情報サービス以外にも変更しないといけない設定などもあるのか調べてみます。

補足情報(FW/ツールのバージョンなど)

python3.7
django2.1
centOS7
VPS:さくらVPS
スマホOS:iOS13.5.1

写真はVPSにアップされるようになっています。

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

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

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

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

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

dodox86

2020/07/02 00:53

スマホ側のプライバシー、位置情報関係のセキュリティ設定ではないでしょうか。スマホのブラウザー経由でアクセスする場合に、自動的に除去するとか。スマホ側のOS、(iOSとかAndroid)とか機種情報を明確にすると、より適切な回答がいただけるかもしれません。
kankun2050

2020/07/02 01:07

早速ありがとうございます!初めての質問投稿でしたので大変助かります。内容修正しました。 カメラの位置情報サービスはオンにしていて、PCに移行した写真だとちゃんとEXIF情報が残っているのですが。。。 位置情報サービス以外にも必要な設定があるのかも調べてみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問