- ベストアンサー
画像ファイルを読み込んでコピーする方法
画像ファイル(gif,jpg)などを読み込んで、読み込んだファイルを指定のフォルダにほり込みたいのですが、方法が思いつきません。ライブラリを使えば簡単にできるのですが、原理というか一連の流れを知りたいので、良い方法を知ってるかた、誰かおしえてくれませんか? 標準入力をつかってバイナリーで読み込めばいいというのはチラッときいたのですが、イマイチわからなくて・・・。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2のサンプルコードに補足&訂正です。 open(INFILE, "画像ファイル名"); #画像ファイルを開く binmode(INFILE); #バイナリモード指定 $len = (-s "画像ファイル名"); #画像ファイルのサイズ read(INFILE, $buf, $len); #画像ファイルを$bufに読み込み ... open(OUTFILE, "> フォルダー名/画像ファイル名"); #出力先ファイルを開く binmode(OUTFILE); #バイナリモード指定 print OUTFILE $buf; #画像ファイルの出力 こんな感じでうまくいくはずです。
その他の回答 (2)
- aton
- ベストアンサー率47% (160/334)
再びatonです。 なるほど,システムはもうできているけど,原理を知りたいということですね。 実際にどんなライブラリーを使っているのかが分からないとせいかくなことは言えませんが,画像ファイルを読み込んで,またそれを出力するだけなら, open(INFILE, "画像ファイル名"); #画像ファイルを開く binmode(INFILE); #バイナリモード指定 $len = (-s "画像ファイル名"); #画像ファイルのサイズ read(INFILE, $buf, $len); #画像ファイルを$bufに読み込み ... open(OUTFILE, "ディレクトリー名/画像ファイル名"); #出力先ファイルを開く print OUTFILE $len; #画像ファイルの出力 てなかんじになるのではないでしょうか。 #最後の行,printでバイナリデータがちゃんと出力できるかどうかがちょっと自信ありませんが。
- aton
- ベストアンサー率47% (160/334)
単にファイルを所定のフォルダに入れたいだけなら,Unix系のOS上であれば, system("cp 画像ファイル名 行先フォルダ名"); で充分なのでは? Windows上で動くPerlについても,よく知らないので確かなことは言えませんが,""の中身をOSに合わせて変えてやれば同様のことはできるのではないかと思います。 #もちろん,画像ファイルや行き先フォルダのアクセス権を #Perlスクリプトが持っていることが前提です。 そうではなくて,画像ファイルを読み込みたい理由が何かあるのでしょうか?
補足
回答してくださって、ありがとうございます。スキャナ等で取り込んだ画像に名前をつけて、クライアント側から画像の種類ごと、サーバーの中の別々のフォルダにほりこむという作業なのですが、、、エンドユーザーがPCの知識がほとんどないということを前提にプログラムを作成しないといけないのです。ですからGUIからマウスだけで、指示どおりにクリックすると放りこめる必要があるのです。システム自体はライブラリを使用して完成しているのですが、原理をしらないと追加機能を作成するときに困ると思ったので質問したのです。 ちなみにサーバーはNTサーバーらしいのでパーミッション設定はいりません。
お礼
どうもありがとうございます。質問してから、自分でも調べてみたのですが、回答の内容とほぼ同じような結論にいたりました。 フォームデコーダはcgi-libを使うしかないようですね。。。こればっかりは仕方がありませんね。