ORACLE TECHNOLOGY NETWORK
 
 
   

Oracle Technology Network (OTN) Japan - 掲示板 » コミュニティ » 初心者の部屋

スレッド: 登録した画像データがWindowsで表示できない

このスレッドに返信する このスレッドに返信する スレッド一覧へ スレッド一覧へ

Permlink 返信数: 33 - ページ数: 3 [ 1 2 3 | 次へ ] - 最新投稿 : 2005/12/14 9:27 最新投稿者: TAKSPEED - スレッド表示形式:
ureturn

投稿数: 73
登録日時: 02/10/27


登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/08 16:28
  このスレッドに返信します… 返信

DB-OS : Linux
DB-Ver:Oracle.9.2.0.4

Linux上に配置した画像データを
プロシージャやSQL*LoaderでDBへ登録し
その登録した画像データを
読込(dbms_lob.read)
Linux上で表示すると問題なく画像は表示できるのですが
SCPで
Windows上に移動し
Windows上で表示すると画像が表示できません。
表示できる画像データもなかにはあるのですが、
表示できない画像データもあります。
ビューアを変えたりするとまったく表示できないときもあります。

どうすればWindowsでBLOBに登録した画像データを
表示することができるでしょうか?

ちなみに、
WindowsのDB(BLOB)に対して
画像データを登録し
BLOBを読込んで、
登録した画像データを表示しようとすると
表示ができない。理由はWindowsで表示するのに必要な
バイナリがBLOB書き込み時に書き込まれていない
のが原因。
というのをどこかで聞きました。

それが関係しているのでしょうか
長々とすいません。

非常に困っています。よろしくお願いいたします。


ureturn

投稿数: 73
登録日時: 02/10/27


RE:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/08 17:03   ureturn さんへの返信です。 ureturn さんへの返信です。
  このスレッドに返信します… 返信

追記です。
バイナリエディタで比較してみたところ
登録する前の画像データの末尾が
BLOBデータを登録する前は
d9
となっている部分が
0a
という形で書き換わっています。
0aをd9に変更すれば画像ファイルは開けましたが
こんな面倒なことをしなくてはならないのでしょうか?

0aはLinuxでいう改行コード(LF)だと思うんですが
ORACLEでBLOB登録する際に
勝手に改行コードを書き足しているのでしょうか?



1079105

投稿数: 1,269
登録日時: 01/05/09


RE[1]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/08 17:29   ureturn さんへの返信です。 ureturn さんへの返信です。
  このスレッドに返信します… 返信

こんにちは,ureturn さん.

>バイナリエディタで比較してみたところ

画像の登録をどうやっていますか?
そこで置換したり,追加したりしていませんか?


ureturn

投稿数: 73
登録日時: 02/10/27


RE[2]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/08 18:29   1079105 さんへの返信です。 1079105 さんへの返信です。
  このスレッドに返信します… 返信

さきで申したとおり
>プロシージャやSQL*LoaderでDBへ登録し
PL/SQLの
DBMS_LOB.LOADBLOBFROMFILE

SQL*Loaderです。

ともに、最後に"0a(LF)"が入ってしまいます。


jiropochi

投稿数: 5,213
登録日時: 00/04/03


RE[3]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/08 18:34   ureturn さんへの返信です。 ureturn さんへの返信です。
  このスレッドに返信します… 返信

>PL/SQLの
>DBMS_LOB.LOADBLOBFROMFILE
>や
>SQL*Loaderです。
>
>ともに、最後に"0a(LF)"が入ってしまいます。

Linuxサーバに持っていくときにLFが混入したということは
ありませんか?
# 例えばASCIIモードでFTPしたとか。


ureturn

投稿数: 73
登録日時: 02/10/27


RE[4]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/08 18:45   jiropochi さんへの返信です。 jiropochi さんへの返信です。
  このスレッドに返信します… 返信

>Linuxサーバに持っていくときにLFが混入したということは
>ありませんか?
># 例えばASCIIモードでFTPしたとか。
表示できない画像をSCPで
Linuxにおいて
Windowsに戻しても表示はできます。
それに、
Linux ORACLEへ登録し
BLOBをダウンロードし
Linux上でバイナリをチェックしても
d9が0aに書き換えられている画像データ
になってしまっています。

そもそも
Windowsで表示するJPEG画像データ全てのファイル末にd9
というコードが入っている理由もよくわかりません。。
BLOB登録時になぜファイル末のd9を0aに変換してしまうのかも
よくわかりません。。


jiropochi

投稿数: 5,213
登録日時: 00/04/03


RE[5]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/08 19:53   ureturn さんへの返信です。 ureturn さんへの返信です。
  このスレッドに返信します… 返信

>表示できない画像をSCPで
>Linuxにおいて
>Windowsに戻しても表示はできます。

ということはSCPがファイルを編集しているということですね。
SCPを使用せずに行ってみてはどうでしょうか?

>それに、
>Linux ORACLEへ登録し
>BLOBをダウンロードし
>Linux上でバイナリをチェックしても
>d9が0aに書き換えられている画像データ
>になってしまっています。

ORACLEに登録する前にバイナリをチェックしてみてください。



オラクル大好き

投稿数: 52
登録日時: 05/10/29


RE[6]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/08 23:47   jiropochi さんへの返信です。 jiropochi さんへの返信です。
  このスレッドに返信します… 返信

>ORACLEに登録する前にバイナリをチェックしてみてください。

確かにバイナリのチェックは大事ですね。


うぇいく

投稿数: 5,807
登録日時: 99/12/20


RE[5]: 登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/09 8:43   ureturn さんへの返信です。 ureturn さんへの返信です。
  このスレッドに返信します… 返信

>そもそも
>Windowsで表示するJPEG画像データ全てのファイル末にd9
>というコードが入っている理由もよくわかりません。。
>BLOB登録時になぜファイル末のd9を0aに変換してしまうのかも
>よくわかりません。。
なんの解決にもなりませんが・・・・

JPEGの画像ファイルにおいて、
0xd8がイメージの開始を表すマーカーです。
0xd9がイメージの終了を表すマーカーです。

ですので、(画像の後に他の情報が着いて無い限り)必ず「ファイルの
最後が必ず0xd9」となるようです。これは、OSに限らないはずです。
# その画像を生成したアプリケーションによっては、画像以外の情報を
# 画像の後に持ってくる可能性はあります。OSではなく、生成した
# アプリケーションに依存します。

# 問題解決には貢献して無いので辞退。画像じゃなくても、バイナリ
# データが変換されちゃったりするんですかね。うーむ。
-- CMN v0.50β --


ureturn

投稿数: 73
登録日時: 02/10/27


RE[6]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/09 9:54   jiropochi さんへの返信です。 jiropochi さんへの返信です。
  このスレッドに返信します… 返信

>ということはSCPがファイルを編集しているということですね。
>SCPを使用せずに行ってみてはどうでしょうか?
>
??
SCPがファイルを編集しているという現象は
ありえないとおもいますが、。。

>
>ORACLEに登録する前にバイナリをチェックしてみてください。
チェックしました。
問題なしです。



Papageno

投稿数: 2,645
登録日時: 00/09/14


RE[7]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/09 10:00   ureturn さんへの返信です。 ureturn さんへの返信です。
  このスレッドに返信します… 返信

http://www2.biglobe.ne.jp/~sota/ffftp.html
など他のftpツールでバイナリで転送して確認されては?

ureturn

投稿数: 73
登録日時: 02/10/27


RE[6]: 登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/09 10:02   うぇいく さんへの返信です。 うぇいく さんへの返信です。
  このスレッドに返信します… 返信

>なんの解決にもなりませんが・・・・
>
>JPEGの画像ファイルにおいて、
>0xd8がイメージの開始を表すマーカーです。
>0xd9がイメージの終了を表すマーカーです。
>
>ですので、(画像の後に他の情報が着いて無い限り)必ず「ファイルの
>最後が必ず0xd9」となるようです。これは、OSに限らないはずです。

お返事ありがとうございます。
私も自力で調べたときに
0xd9がイメージの終了を表すマーカーです。
というのに気づくことができました。

しかし、その後の調査で
PL/SQLから今までBLOBを読込んでいたのを
今度は
JavaAPLで読込むことにしたところ
ファイル末がd9→0aになるのではなく
d9以降にさらにバイナリが付与される結果になってしまいました。

なので、BLOBの書き込みが悪いというよりは
BLOBの読込でなんらかの処理をORACLEがしている
ようなきがしてなりません。

それ以降、その拡張されたバイナリ(PL/SQLもJavaAPLで読込んだのでも)

登録・読込を繰り替えし行っても
バイナリが変わる事はありません。

なぜこうなるのかがもうお手上げ状態です。
ORACLEがd9のファイル末を
嫌っているとしかおもえません。

もし、よろしければ
みなさまの環境でBLOBデータを登録し
PL/SQL もしくは JAVA等で
BLOBファイルをダウンロードし
元データとダウンロードデータを
バイナリエディタで比較して確認していただきたいものです。

とりあえず、もうわからないので
ORACLEに直接聞いてみることにします。

イロイロとありがとうございました。


ureturn

投稿数: 73
登録日時: 02/10/27


RE[8]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/09 10:05   Papageno さんへの返信です。 Papageno さんへの返信です。
  このスレッドに返信します… 返信

お返事ありがとうございます。

さきにも申したとおり
Linuxに画像ファイルを置いた時点でバイナリエディタで
確認しておりますので
SCP転送時にファイルが変化しているという
事はありえません。
それに、私の使っているSCPクライアントにはFFFTPのように
ASCII転送やBINARY転送の
区分けがないです。
デフォルトBINARY転送なので。



Papageno

投稿数: 2,645
登録日時: 00/09/14


RE[9]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/09 10:12   ureturn さんへの返信です。 ureturn さんへの返信です。
  このスレッドに返信します… 返信

他に疑わしそうなところがないので

>SCP転送時にファイルが変化しているという
>事はありえません。

を疑ってみたんですが。
ダメ元でも他のクライアント・ツールを試す気はありませんか?

ureturn

投稿数: 73
登録日時: 02/10/27


RE[10]:登録した画像データがWindowsで表示できない
投稿時刻: 2005/12/09 10:29   Papageno さんへの返信です。 Papageno さんへの返信です。
  このスレッドに返信します… 返信

>を疑ってみたんですが。
>ダメ元でも他のクライアント・ツールを試す気はありませんか?
現在の試験環境Linuxは
セキュリティ上FTPの穴があいておらず
その穴をあける事が容易にはできません。

先で申しましたとおり
Linux上の画像ファイルと
Windows上の画像ファイルは
バイナリ単位でCOMPして確認しておりますし、
下の返信でも申したとおり
Windowsから直接JavaAPLでファイルを読込むと
今度は0aとは違う形でバイナリコードが変化するようなので、

書き込み時の問題というよりは
ORACLEの読込時の問題かと思っております。







ウェブサイトのご使用条件 | 個人情報保護基本方針/情報保護基本方針