そんちょーが村長を目指す

そんちょーのブログ

未分類

VB6のImageKitで特定の画像を読み込むと落ちる件

投稿日:

こんにちは。そんちょーと申します。

先日VB6でImageKitで特定のjpg画像をloadImage()した際にプログラムが落ちる現象に見舞われて大変だったので、調査してわかったことをシェアします。
こんなサポートの切れたレガシーなライブラリは本来使うべきでないですが、使わざるを得ない環境にいる私と同じ悲しき民の助けになればと思います。

起きること

ImageKit.LoadFile()で、特定の画像を読み込むとプログラムが落ちる。
エラーハンドラーにも降りて来ずにそのまま落ちる。
困った。

原因

おそらくImageKit側のバグです。
もうサポートがとっくに切れているのである程度は仕方がないですね。

画像によって読み込めたり落ちたりするのは、どうやら画像のメタ情報が何か干渉しているようです。
バイナリエディタで中身をいろいろいじってみたら、落ちる方の画像は何やら大量のメタ情報が入っていました。

具体的に悪さをしている箇所までは特定しませんでしたが、メタ情報を全削除したら読み込んでくれるようになりました。

解消法

先述の通り画像のメタ情報を削除すれば行けます。
ただ、WindowsのExplorerにデフォルトで備わっているメタ情報編集機能だと削除が甘くて問題が解消しなかったので、専用のツールを使います。

私はExiv2というツールを使いました。
Exiv2をダウンロードできるサイトはここ、使い方はこのサイトを見るとわかりやすかったです。
コマンドプロンプトから削除します。

以上です。

-未分類

Copyright© そんちょーのブログ , 2024 All Rights Reserved Powered by STINGER.