カレッヂ |
質問者 yasusan
投稿日 1/31(水) 12:04:21
cgi初心者です。色々なスクリプトを自分のパソコンで確認しながら勉強しています。 そこで、お伺いしたいのですが、 簡易BBS2000iを以下の環境で使用すると画像形式が異なるということで、 画像が表示されなくなってしまいます。 unix と Windows では、画像の形式は違うのでしょうか。 又、どうしたら、Windows でも画像を見るようにできるのでしょうか。 お助けください。 OS : Windows98 per : perl for Win32 http server : Anhttp |
回答者 まさ
[削除]
投稿日 2/2(金) 21:14:22
画像形式が異なるというエラーが出るのですか? 今ざっとスクリプトを見ましたけど、そんなエラーはないですけど。 そもそもWebで使われる画像形式はプラットホームに依存しません。 しかしUNIXを前提に作られているスクリプトをWinで動かす場合には注意が必要で す。そのスクリプト内部でsystem等でUNIXのコマンドを呼んでいないかとか、ロック 機能はどうするのかとか、その辺の処理をうまくクリアーしてやらないと動かないものも あります。そのへんは大丈夫なんでしょうか? 直接それが画像に影響しているかは分かりませんが。 ちなみにWin98ならわたしなら「AnHTTPd」は使わずに、PWSでActivePerlを使いますが。 まあしかしそんなことは関係ないとは思いますが。一度Perl for Win32をActivePerlに 変えてやれば。 |
回答者 yasusan
[削除]
投稿日 2/3(土) 20:29:49
エラーとしてコメントが表示されるのではなく、 画像が読み出せない状態です。(エラーはでません。) その画像ファイルを他のアプリケーション、photoshopやpaintで 開こうとすると開けないのです。 その際、 photoshopは、「不明または無効なJPEGマーカーが見つかりました」 paintは、「このビットマップは無効か現在サポートされていない形式です。」 と表示されてしまいます。 ちなみに、unixサーバーで動かすと全く問題なく作動します。 当然画像ファイルも読めます。 |
回答者 yasusan
[削除]
投稿日 2/4(日) 00:03:54
> 一度Perl for Win32をActivePerlに変えてやれば。 Activeperl build 623 をインストールしてみましたが 結果は、同じです。 自分で若干改造したのが悪いのか もう一度原点に返ってやってみます。 |
質問者 yasusan
[削除]
投稿日 2/8(木) 11:19:12
WEBサーバーをPWSに替えて実行してみました。 結果 HTTP エラー 405 405 メソッドは許可されていません Request Line に指定されたメソッドは、要求によって識別されたリソースでは許可されていません。要求するリソースに適切な MIME タイプが設定されていることを確認してください。 この問題が続く場合には、Web サーバーの管理者に問い合わせてください。 と表示されます。 意味がわかる方ご指導ください。お願いします。 |
回答者 まさ
[削除]
投稿日 2/9(金) 13:03:14
このエラはPWSの設定が正常に終わっていないときによく出ます。 スクリプトを全く触っていないならPWSの設定です。 もう一度設定し直して下さい。 ところで、 その画像はUNIXで作成したものですか? 画像ソフト名はなんでしょう? UNIXは何を使っていますか? 画像形式は何でしょう? |
回答者 yasusan
[削除]
投稿日 2/10(土) 09:27:03
ご指摘のとおり、PWSは、完全インストールできない状態です。 私の環境では、インストール途中で、原因不明のエラー0x80004005が発生してしまうのです。 ただし、これでも、他のCGIをいくつかテストしましたが、問題なく作動していたのです。 PCを代えても(最も、私の携帯用ノートなので、インストール環境は、ほぼ同じ) 同じエラーになります。 また、Anhttpd での動作で起こったことですが、画像ファイルが認識できるときもありました。ただし、絵が化けてしまって、全く原型をとどめません。 画像は、windows で作成した jpg です。 unixの種類は、わかりません。プロバイダ(interq)の環境のものです。(この環境では、全く問題なく動きます。) |
回答者 まさ
[削除]
投稿日 2/10(土) 09:59:08
PWSの方はちょっとおいときまして、こっちはまたスレッド変えて質問してみて下さい。 ----------- Windowsで作成したJPEGがWindowsで表示できないのはどう考えてみてもおかしいですね。 わたしはてっきりUNIXで作成された画像だと思っていました。 これはCGIもPerlも全然関係なく、単なる画像の問題ですね。 わたしは画像はものすごく詳しいわけではないので、あまり細かくは指摘できません。 どんなソフトで作ったのかわかりませんが、保存形式が間違っていません? Windows用に保存すれば当然Windowsで表示されますので、それで保存してみて下さい。 ちなみにWindowsで表示されている画像はUNIXでも表示されます。 しかしJPEGにWindows形式とかなかったような気がしますが。BMPには形式あり ますけどね。 最悪わたしなら別の形式(BMPとか)で一旦保存して、画像変換ソフトでJPEGに します。例えばLViewProのようなソフトで。 単なる画像の問題なら手はいくらでもあるような気がしますけどね。CGIがからんで きたりしたら厄介ですけど。 別のソフトで画像作成すると言う手もありますね。 |
回答者 羊
[削除]
投稿日 2/10(土) 11:55:35
あまり関係ないと思いますが、 TBSのテレビ番組「世界遺産」のサイトのJPEGを Paint Shop Proで開くとエラーになった経験があります。 |
回答者 yasusan
[削除]
投稿日 2/10(土) 14:02:24
> Windowsで作成したJPEGがWindowsで表示できないのはどう考えてみてもおかしいですね。 > わたしはてっきりUNIXで作成された画像だと思っていました。 画像の状況について、説明が不足していました。もうしわけありません。 それは、こういうことなのです。 windows で jpg 画像を作成(photoshopで)==> 通常の画像、全く問題なし BBS2000iを起動して掲示板に画像を貼り付ける。==> 転送先にファイルがつくられるが、表示不可 (photoshopで直接そのファイル(BBS2000iで転送されたファイル)を開こうとしても開けない) つまり、転送の過程でファイルが壊れてしまうのです。 |
回答者 まさ
[削除]
投稿日 2/10(土) 19:12:40
なるほど、意味がわかりました。 このBBSに投稿した画像が正常に表示されないということですね。 直接フォルダーの中の画像を開こうとしても開けないと。 それならばCGIの問題ですね。 この前はCGIとは全然関係ないと書いてしまいましたが、恐縮です。 いまざっとスクリプトを見ましたけど、これは基本的にUNIX用に作られているようで、 Windowsで動かすとなると若干の修正が必要ですけど、それはもう既に済んでいるのでしょ うか? たとえばロック機能をOFFにするとか、chmodをコメントアウトするとか、まだ 他にもあるかもしれませんが。 しかしそれらは画像とは直接関係ないと思いますけど。 これは画像を直接そのまま保存しないで、何かしてから保存してますね。その辺がおかしい のでしょう。もうちょっと調べてからまた連絡します。 |
回答者 まさ
[削除]
投稿日 2/10(土) 20:56:49
わかりました。 画像はバイナリーデータなのでそのように扱わなくてはいけません。特にファイルへの書き 込み時には。それにはbinmodeを使います。ちなみにUNIXにはこれは必要ないです。で すからそのスクリプトにはbinmodeがないのです。これはDOSで動かす時のみ必要です。 オリジナルデータ722行目に以下のようなものがあります。 if (!open(IMAGE,"> $img_dir{$cmd{'log'}}$number$ext2\.$ext")) { &Error('書出エラー',"画像データ $fname\.$ext が記録できませんでした."); } print IMAGE $in{$name}; close(IMAGE); これにbinmodeを追加します。 if (!open(IMAGE,"> $img_dir{$cmd{'log'}}$number$ext2\.$ext")) { &Error('書出エラー',"画像データ $fname\.$ext が記録できませんでした."); } binmode(IMAGE); print IMAGE $in{$name}; close(IMAGE); これでファイルハンドルIMAGEはバイナリーモードになります。 普通はUNIXでバイナリーを使う場合も、明示的にbinmodeは記述するのですがね。たとえ 効果はないとしても。これにはそれがなかったためにそのような不具合が起こったのです。 |
回答者 yasusan
[削除]
投稿日 2/11(日) 16:16:04
まさ さん 懇切丁寧なご指導ありがとうございました。 完璧に動作します。 また一つ勉強になりました。 趣味で、プログラムづくりをしている初心者にとっては、 本当に助かりました。重ねて御礼いたします。 なお、ネットサーフレスキューさんその他の方々にも心から感謝したします。 この場を借りて御礼いたします。 |
返信(回答)する
Web裏技 |