JPEG/EXIFまわりを修正

31 views
Skip to first unread message

うぇいく

unread,
Feb 22, 2015, 1:33:42 AM2/22/15
to nadesi...@googlegroups.com

JPEG/EXIFにて、バイトオーダーがMMの場合に、LONGとULONG以外の値がおかしいような感じなのを修正しました。
(分数型はバイトオーダーを考量していないのが原因、その他は常に4bytesでswapしているのが原因)
また、その際に、以前に途中まで作りかけていた以下の部分が入りました。
あと、名称が表示されるタグを追加しました(仕様上の2.3までと、Padding)
あと、GPS情報についても取得できるようにしました。

なお、今はEXIFよりもXMP(とEXIF併用)が多い気もするので、EXIFだけの変更はファイル内での整合性が合わない可能性が高いです。
属性を限定して、EXIF,XMP,IPTCを正しく修正できる命令を複数用意するのが良いかもしれません。

また、テストがsqlite.dllの読み込みで失敗します。エラーメッセージにエラーコード(GetLastError)の値を含むようにしてみたところ、ERROR_NOACCESSでした。
このエラーコードは、読み込んだDLLのエントリポイント処理中にメモリアクセス例外が発生した場合とのことなので、sqliteのテストの前までにメモリ内が
よろしくない状態になっているか、もしくは、sqlite.dllが行儀悪い作りになっている可能性があります。

Mineaki SAKATOKU

unread,
Feb 22, 2015, 7:48:12 PM2/22/15
to nadesi...@googlegroups.com
うぇいくさん、皆さん

クジラ飛行机です。EXIF周りのアップデートありがとうございます!
なるほど、XMPなどにも対応できたら良いですね。

sqlite.dllのエラーも確認しました。
先日のアップデート前には、エラーが出てなかったので、やはりメモリ周りの感じがしますね。
見てみます。

OSC東京も来週に迫っていますね。
OSC前に、新しいバージョンを出せるといいですね。

それでは!

2015年2月22日 15:33 うぇいく <we...@nifty.com>:

--
このメールは Google グループのグループ「日本語プログラミング言語「なでしこ」開発」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには nadesiko-dev...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
-----------------------------------------
Mineaki SAKATOKU (酒徳峰章 - クジラ飛行机)
mailto: w...@kujirahand.com
website: http://kujirahand.com/

Mineaki SAKATOKU

unread,
Feb 22, 2015, 8:49:43 PM2/22/15
to nadesi...@googlegroups.com
うぇいくさん

クジラ飛行机です。
バグ掲示板
にも挙げましたが、
SQLiteのエラーですが、一行ずつ追ってみると、
sqlite.dllをLoadLibraryしているところでエラーが出ています。

コードを変えていない以前のコードでもエラーが出ています。
ためしに、数年前のなでしこをダウンロードしてテストを実行してみました。
http://wbot.net/old_nadesiko/?ver=1.537
すると、同じく、sqlite.dllの読込でエラーが出てしまいます。

もしかして、sqlite.dll自体の依存DLLが
Windows updateかなにかの原因で、使用できなくなっている可能性はないでしょうか。
皆さんの環境ではどうでしょうか。
私の環境:Windows7(32bit) service pack1

既に、SQLite2のソースコードが入手できない状態なので、
なでしこのSQLite2のサポートも潮時なのかもしれませんね。



2015年2月23日 9:48 Mineaki SAKATOKU <kujir...@gmail.com>:

うぇいく

unread,
Feb 24, 2015, 9:27:58 AM2/24/15
to nadesi...@googlegroups.com
SQLiteの公式サイトにて、ソースリポジトリからversion_2というタグで取り出すと、なにかそれっぽいものが取れるようです。
試しに、DLLを再作成してみました。
・ソースリポジトリからversion_2タグの更新で、tarballか一括zipで落とす。
・mingw32環境でconfigure。
・一部、off_t関連でエラーとなるので数行修正(cygwinなら動くのかも?)
・make dllで作成。が、動かず。
・makefileを直接修正してnmake化。
・Windows Platform SDK環境下でnmake dllで作成。

という手順で作成したものです。

掲載は以下のページのリンク(とりいそぎDLLのみを圧縮)。
//weyk.la.coocan.jp/weyk/nadesiko/

基本的にコンパイル時のオプションはデフォルトのままですが、1行あたりのバイト数のみ、推奨値から最大値に変更しています。
文字コードは、UTF8ではなくLatin1です(変更忘れ※)。
※UTF8とLatin1の差はsubstrやLenにて、UTF8オプションの場合、UTF8文字数単位になることだけだったはずです。
 Latin1の場合、いわゆるバイト数単位になります。

sqlitte3に、ファイル形式が何世代かあるのは知っていたのですが、sqlite2にも何世代かあるようです。基本的には自動的に
上がってしまうことはないはずですが、新規作成時だけ注意が必要です。
(世代の新しいファイル形式は、より低いバージョンのライブラリから正しく読めません。逆は可)

2015年2月23日月曜日 10時49分43秒 UTC+9 酒徳峰章:

Mineaki SAKATOKU

unread,
Feb 24, 2015, 9:48:32 AM2/24/15
to nadesi...@googlegroups.com
うぇいくさん

クジラ飛行机です。
おー、SQLite2のコンパイルありがとうございました!!
SQLite2の寿命かと思っていましたが、無事に動くようになりました。素晴らしいです。

各所で、SQLite2のサポートが打ち切られていますので、
このDLL、なでしこ以外でも、かなり貴重なのではないでしょうか。

これ入れて、バージョンアップ版をリリースしますね。
OSC東京の前に間に合いそうです。

それでは、今後とも、よろしくお願いします。

2015年2月24日 23:27 うぇいく <we...@nifty.com>:
Reply all
Reply to author
Forward
0 new messages