iPhone画像の表示について への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 kiku  (社会人)
投稿日時
2019/12/6 13:09:06
検索しただけですが、下記が参考になりそうです。
https://blog.shibayan.jp/entry/20140428/1398688687
https://blog.shibayan.jp/entry/20140428/1398688687
投稿者 N88-Basic  (社会人)
投稿日時
2019/12/6 12:29:11
Windows 10 Home(64) Ver 1909 + Visual Studio 2019 の開発環境でアプリを作成しています。
iPhone で撮影した画像を、OneDrive に保存した画像(iPhone の onedrive アプリ等でアップロード)を表示するアプリを作成していますが、撮影した画像は上下が反転して表示されます。Windows 添付のフォトやペイントでは問題ありません。
撮影状態がiPhone 横向きで左側がシャッターボタンの場合に上下反転します。
右側シャッターボタンの場合は問題ありません。向きから言えば正常かもしれませんが、iPhone 上は上下逆転しません。
iPhone を PC に接続してフォルダーを見ると上下逆転しますが、フォトなどでは問題ありません
作成したアプリは以下のようなものです。上下が反転を回避する方法があればご教授ください。
※iPhone から OneDrive へは Mac にエアドロップ して、Onedrive にアップロードしています。
'----------------------------------------------------------------------------------------------
Private Sub ShowImage(ByVal sFileName As String, ByVal picBox As PictureBox)
Dim GetImage As Image = LoadImage(sFileName)
Dim Canvas As Bitmap = New Bitmap(picBox.Width, picBox.Height)
Dim g As Graphics = Graphics.FromImage(Canvas)
g.DrawImage(GetImage, 0, 0, picBox.Width, picBox.Height)
g.Dispose()
picBox.Image = Canvas
End Sub
' 以下の関数はDobon.net さんのサンプルを利用させていただいております。
'----------------------------------------------------------------------------------------------
Public Shared Function LoadImage(ByVal filename As String) As System.Drawing.Image
Try
Dim fs As New System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read)
Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(fs)
fs.Close()
Return img
Catch ex As Exception
Return Nothing
End Try
End Function
以上、よろしくお願いします。
iPhone で撮影した画像を、OneDrive に保存した画像(iPhone の onedrive アプリ等でアップロード)を表示するアプリを作成していますが、撮影した画像は上下が反転して表示されます。Windows 添付のフォトやペイントでは問題ありません。
撮影状態がiPhone 横向きで左側がシャッターボタンの場合に上下反転します。
右側シャッターボタンの場合は問題ありません。向きから言えば正常かもしれませんが、iPhone 上は上下逆転しません。
iPhone を PC に接続してフォルダーを見ると上下逆転しますが、フォトなどでは問題ありません
作成したアプリは以下のようなものです。上下が反転を回避する方法があればご教授ください。
※iPhone から OneDrive へは Mac にエアドロップ して、Onedrive にアップロードしています。
'----------------------------------------------------------------------------------------------
Private Sub ShowImage(ByVal sFileName As String, ByVal picBox As PictureBox)
Dim GetImage As Image = LoadImage(sFileName)
Dim Canvas As Bitmap = New Bitmap(picBox.Width, picBox.Height)
Dim g As Graphics = Graphics.FromImage(Canvas)
g.DrawImage(GetImage, 0, 0, picBox.Width, picBox.Height)
g.Dispose()
picBox.Image = Canvas
End Sub
' 以下の関数はDobon.net さんのサンプルを利用させていただいております。
'----------------------------------------------------------------------------------------------
Public Shared Function LoadImage(ByVal filename As String) As System.Drawing.Image
Try
Dim fs As New System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read)
Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(fs)
fs.Close()
Return img
Catch ex As Exception
Return Nothing
End Try
End Function
以上、よろしくお願いします。
ご提供いただいたリンク先を拝見しました。
画像ファイルのプロパティは一応調べて情報を探してみたんですが、Windows のプロパティ情報では表示されない Exif に画像の回転情報があるそうです。
目的のプログラムでは撮影日を取得するために Exif を読み込んでいますので、目的の情報を取得できそうです。その後、画像の回転処理を組み込んでみたいと思います。
今後ともよろしくお願いいたします。