magファイルをbmpファイルにコンバートする方法

このQ&Aのポイント
  • magファイルをbmpファイルに変換する方法について教えてください。
  • ゲームの画像を抽出したところ、magファイルでの抽出であり、画像が見れません。CG画像をばらばらになっているmagファイルからbmpファイルに変換するソフトや合成する方法があれば教えてください。
  • mag2bmp.zipというプログラムを見つけましたが、使い方がわかりません。magファイルを合成する方法や他の変換ソフトについて詳しい方がいれば教えてください。
回答を見る
  • ベストアンサー

.magファイルを.bmpファイルにコンバートconvertする方法

初めて質問します。 ファイルのコンバートについてです。いろいろと自分でも調べてみましたが、挫折したので質問します・・・。 あるゲームの画像を抽出したところ、すべて.magファイルでの抽出であったため、画像が見れません。ゲームのCGはフルカラー以上の画質の水準なので、それらをおそらく一枚のCG毎に合成(?)しないと.bmpとしてきちんとその一枚一枚の画像閲覧ができない状態です。 単純にそれだけで完結している.magファイルを.bmpに変換するソフトなどは腐るほどありますが、ばらばらになっているものを合成するソフトは見つかりませんでした。 勝手に引用していいかわかりませんが、一応、下記のサイトにあったmag2bmp.zipを使えば合成ができるようなのですが、解凍して中身を見てみても、使い方がわかりませんでした(一応アプリケーションは入ってますが、ダブルクリックで実行しようとしても起動した途端にすぐ終了してしまいます) http://plaza.rakuten.co.jp/asmodean/diary/?act=reswrite&res_wid=200701091025067961&d_date=2006-12-25&d_seq=0&theme_id=0 なので、上記のプログラムの使い方、もしくは、上記のプログラムでなくてもいいので.magファイルの合成について詳しい方いたら御指南ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • next_x
  • ベストアンサー率39% (144/369)
回答No.2

mag2bmpはコマンドラインツールです。GUIではないのでコマンドプロンプト でコマンド指定しましょう。 なお、BANANA Shu-Shuブランドのグラフィックデータ専用みたいなので本来 のmag(マグロ形式)とは違うようです。その抽出したGAMEの名前位書いたほう がいいと思う。 ちなみにBANANA Shu-ShuのGAMEだとして このツールは元のファイル名と変換先を指定しないとだめです。 pathの通ったところにmag2bmpを置きmagデータが置いてあるディレクトリで for %f in (*.mag) do mag2bmp %~nf.mag %~nf.bmp これですべてのmagがbmpになります。ただしこれはWindows2000以降の コマンドプロンプトで実行できる内部コマンドですのでそれ以前のOSでは 同じコマンドがあっても機能が違うので実行できません。

emia_t_ej
質問者

お礼

ありがとうございました。無事変換できました。 今更、というわけでもないのですが、うっすらとコマンドプロンプトとかを使うのではないかとは思ってはいました。 しかし、いかんせんプログラムはdelphiを少しかじった程度で、そっち方面にはまったく明るくないと言っても過言ではないため、今回の質問に至りました。 コマンドを教えて頂き、大変助かりました。コマンドプロンプトを使うというだけでは、初心者にはどんなコマンドを入れればいいのかチンプンカンプンなので、やはり変換などもっと勉強したいと思います。

その他の回答 (1)

  • violet430
  • ベストアンサー率36% (27472/75001)
回答No.1
emia_t_ej
質問者

お礼

ありがとうございます。でも、それはもう試したやつなんです。その2つだと、すでにかいた通り、ひとつのmagファイルをひとつのbmpファイルにすることしかできないと思います(もし違うやり方があるのであれば教えて下さい)。 D&D画像変換などはフォルダごと変換できるので、もしかしてフォルダごとドラッグしてしまえば自動判別してbmpに変換できるかと思いましたが、できませんでした。 あとは、専用の抽出ツール MamiListなども使ってみましたが(http://www.dsl.gr.jp/~sage/sagepage/oldtop.html 2006/08/28参照)、拡張オプションを追加してみても別に画像として見ることができませんでした。

関連するQ&A

  • bmpファイルが開けません

    お世話になります。 保存したbmpファイルの画像のほとんどが「Photo Editor」で開けなくなってしまい、困っています。 ここの過去ログなどにあたり、「ファイルを右クリックして、Photo Editor起動」、「またファイルをクリック、プロパティ、プログラムの変更」をやってみましたが「ファイルを開けません」との表示が出ます。 またコントロールパネル→フォルダーオプション→ファイルの種類でbmpの拡張子の詳細をPhoto Editorに変更したのですが、同じ状態です。 最後に「Photo Editor」の削除と追加も行いましたが変わらずです。 ちょっと気になるのはコントロールパネル→フォルダーオプション→ファイルの種類で 拡張子    ファイルの種類 BMP      BMPファイル DIB       ビットマップイメージ との表示がでます。両方とも推奨がpaintとなっていましたので「Photo Editor」にもしてみました。 無関係かもしれませんが、上記両方のファイルの種類を推奨のpaintとし詳細設定をクリックすると、「edit]が太い文字になっています。 かなりの初心者なもの勘違い、大間違いなどあると思います。お手数ですが、どうかよろしくお願い致します。

  • BINファイル→BMPファイルへの変換について

    表題の件について教えてください。 画像ファイルの元(?)となっているBINファイルを持っているのですが、 これをペイントなどで確認できるBMPファイルにしたいのです。 もともとBINとBMPは同じものなのだということは色々調べてわかったのですが、 何か変換ツールのようなもので変換できるのでしょうか? それともstirlingなどで開いてからbmpとして変換する機能があるのでしょうか? どなたか教えてください。 (プログラム関連については完全に無知なので変な表現となっているかもしれません。) ※なお、拡張子を単純に「.bmp」に変えるという手法は試してみましたが無理でした・・・

  • 破損した画像(BMP?PNG?)なのでしょうか?

    比較的大量のBMP画像をPNGに加工するために 自動的に軽い形に変換してくれるAzConvPNGで まとめて加工していたのですが、 自分のHPにアップロードしてみたところ一部のPNG画像は (一瞬下方からノイズがかかって)表示する事ができませんでした。 通常のプレビューでは見る事ができるのに… そこで、ペイントの編集機能からPNG⇒PNGに変換すると データは重くなりましたが表示されるように。 変換にミスでもあったのかと、このデータを再びBMPに変換して またAzConvPNGで軽いPNGに変換。 (ファイルサイズは前の失敗したものと全く同じに) アップロードしてみるとやはり同じエラーで表示されません… 元のBMP画像は壊れていたのでしょうか? それともAzConvPNGの変換に何か問題があるのでしょうか。 これはゲーム内のCGだったのですが、抽出したものと KIOKUでプリントしたBMPをAzConvPNGで変換した時 それぞれ全く同じサイズのPNGが出来上がったので BMPは全て見た目通りの情報だと思っているのですが…

  • ExcelVBAでシートに貼り付けたBMPを探したいです

    シート上に貼り付けたBMPファイルを探して、指摘するようなプログラムを作ろうと考えています。 しかし、BMPファイルの探し方が分かりません。 BMPというプロパティを持っていたりするのでしょうか? また、貼り付けた画像は、オートシェイブ扱いとなって探す事は無理なのでしょうか? どなたか宜しくお願いします。

  • BMP画像の取り扱い

    (1)BMP形式の画像を読み込み (2)RGB値を取得 (3)画素値を操作 (4)新しいファイルに書き出す というプログラムを作りたいのですが、BMP画像からRGB値がうまく取り出せません。 参考URLなどありましたらぜひ教えてください。

  • BMPファイルへの書き込みができない

    このプログラムは、左半分を黒、右半分を白の画像をBMPファイルに出力しようとしています。(出来ていません) プログラムの下に質問書いてます!お願いします! #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct{ char *filename; int x; int y; int width; int height; unsigned char data[80][100]; } BMP_DATA; static void WriteBmp(char *filename, BMP_DATA Image) { unsigned long Bmp_size;/*BMPファイルのサイズ*/ unsigned int Bmp_info_header_size;/*情報ヘッダのサイズ*/ unsigned int Bmp_header_size;/*ヘッダのサイズ*/ long Bmp_width;/*幅*/ long Bmp_height;/*高さ*/ unsigned short Bmp_planes;/*プレーン数*/ unsigned short Bmp_color;/*色 = 1[bit] (黒か白かだけ)*/ long Bmp_image_size;/*画像部分のサイズ*/ long Bmp_xppm;/*水平解像度*/ long Bmp_yppm;/*垂直解像度*/ int i,j; unsigned char Bmp_headbuf[54]; /*ヘッダ*/ unsigned char Bmp_Data[13]; FILE *Out = fopen(filename, "wb"); if(Out==NULL){ fclose(Out); exit(1); } /* ヘッダ情報の準備 */ Bmp_info_header_size = 40; Bmp_header_size = 54; Bmp_planes = 1; Bmp_color = 1; Bmp_image_size = Image.height * Image.width; Bmp_xppm = 0; Bmp_yppm = 0; Bmp_size = Bmp_image_size + Bmp_header_size; Bmp_headbuf[0] = 'B'; Bmp_headbuf[1] = 'M'; memcpy(Bmp_headbuf+2, &Bmp_size, sizeof(Bmp_size)); Bmp_headbuf[6] = 0; Bmp_headbuf[7] = 0; Bmp_headbuf[8] = 0; Bmp_headbuf[9] = 0; memcpy(Bmp_headbuf+10, &Bmp_header_size, sizeof(Bmp_header_size)); Bmp_headbuf[11] = 0; Bmp_headbuf[12] = 0; Bmp_headbuf[13] = 0; memcpy(Bmp_headbuf+14, &Bmp_info_header_size, sizeof(Bmp_info_header_size)); Bmp_headbuf[15] = 0; Bmp_headbuf[16] = 0; Bmp_headbuf[17] = 0; memcpy(Bmp_headbuf+18, &Image.width, sizeof(Bmp_width)); memcpy(Bmp_headbuf+22, &Image.height, sizeof(Bmp_height)); memcpy(Bmp_headbuf+26, &Bmp_planes, sizeof(Bmp_planes)); memcpy(Bmp_headbuf+28, &Bmp_color, sizeof(Bmp_color)); memcpy(Bmp_headbuf+34, &Bmp_image_size, sizeof(Bmp_image_size)); memcpy(Bmp_headbuf+38, &Bmp_xppm, sizeof(Bmp_xppm)); memcpy(Bmp_headbuf+42, &Bmp_yppm, sizeof(Bmp_yppm)); Bmp_headbuf[46] = 0; Bmp_headbuf[47] = 0; Bmp_headbuf[48] = 0; Bmp_headbuf[49] = 0; Bmp_headbuf[50] = 0; Bmp_headbuf[51] = 0; Bmp_headbuf[52] = 0; Bmp_headbuf[53] = 0; /* ヘッダ情報書き出し */ fwrite(Bmp_headbuf, sizeof(unsigned char), Bmp_header_size, Out); /* 画像データ書き出し */ for(i=0;i<13;i++) Bmp_Data[i] = 0; for(i=0; i<Image.height; i++){ for(j=0; j<Image.width; j++){ int index = j/8; if(j%8 == 0){ Bmp_Data[index] = Image.data[i][j ] * 128 + Image.data[i][j+1] * 64 + Image.data[i][j+2] * 32 + Image.data[i][j+3] * 16 + Image.data[i][j+4] * 8 + Image.data[i][j+5] * 4 + Image.data[i][j+6] * 2 + Image.data[i][j+7]; } } Bmp_Data[12] = (Bmp_Data[12] & 0xf0); fwrite(Bmp_Data, sizeof(unsigned char), 20, Out); /* ○ */ } fclose(Out); } int main() { BMP_DATA Image; int line = 0; int i,j; Image.x = 0; Image.y = 0; Image.width = 100; Image.height = 80; if(line == 0){ for(i=0; i<Image.height; i++){ for(j=0; j<Image.width; j++){ Image.data[i][j] = 1; } } } while(1){ /* BMPファイルデータを編集 */ for(j=0; j<Image.width; j++){ if(j < 50){ Image.data[line][j] = 0;//black }else{ Image.data[line][j] = 1;//white } } /* すべての列を編集したら、再描画する */ if(line == 63){ /* BMPファイルに書込む */ WriteBmp("display.bmp", Image); break; } line++; } return 0; } 以下の条件で、BMPファイルへ書き込もうとしています ・色の深さ1(黒か白) ・画像のピクセルサイズ(横100×縦80) fwrite関数で1列ずつ書き込もうとしているのですが、 この関数は1バイトずつしか書き込めないみたいで、100ビット書き込もうと思うと、 最低でも104ビット書き込まなくてはならない状況になります。 まず、この4ビットはどう処理すればいいのでしょうか?? あと、display.bmpのファイルがある状態で、プログラムを実行するとちゃんと動くのですが、 プログラム中の○のところのfwrite関数の第三引数を13にすると、BMPファイルが壊れて閲覧できなくなります。(ある程度大きい数字だと、BMPファイルは壊れないのですが、ぐちゃぐちゃの絵になります) その理由もわかりません。 汚い文章&プログラムですが よろしくお願いします><

  • VB.NET/256色でのBMPファイル保存

    いつもお世話になっております。 VS2003/VB.NET/XP Pro SP3 画像処理にアプリケーションを開発していますが、画像処理に関しての知識が乏しくて困っています。 Image.SaveメソッドでBMPファイル保存しようと思っているのですが、フルカラー保存ではなく、256色保存の方法が分かりません。 色々と調べてみたのですが、簡単な方法が見つからず、自前で処理をするしか方法がないのでしょうか? 256色への減色保存を経験がある方からのご教授が頂けると助かります。 よろしくお願いいたします。

  • BMP画像ファイルの構造について

    JavaでBMPファイルを読み出し、read()を使い1バイトごと読み出しました。使用した画像の大きさは,4x4のカラーデータです。 実行結果は、 66 77 102 0 0 0 0 0 0 0 54 0 0 0 40 0 0 0 4 0 0 0 4 0 0 0 1 0 24 0 0 0 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 という結果が得られ、最初の54バイトがヘッダ情報で、残りが画像データというのは、分かるのですが、解析結果から、画像データのバイト数が48バイト(上記、65533の個数)であります。しかし、画像データ(BMPファイル)のもともとの大きさが4x4ということから結果として得られるバイト数は16バイトになると思うのですが、なぜ画像データの大きさが16バイトではなく48バイトなのでしょうか? 画像に詳しい方教えてください。できれば、参考サイトもあれば参考サイトも紹介していただきたい。

  • WORD2000にbmpを画像として挿入する方法

    教えてください! いろんな設定をしていて、いざWORDで仕事をしようとしていたのです。 いつもどうりbmpファイルをD&DしてWORDに持ってくると画像が表示されるはずなのにアイコンとファイル名のおかしな絵が出てきました。 早急に直したいので回答をお願いいたします。

  • BMP画像ファイルの読み書き

    Visual StudioのC言語により、ビットマップ形式の画像に対するプログラミングで 簡単な背景差分のプログラムを作成しています。 背景画像と対象画像2枚を読み込み色の差を取り、 差の値が背景の値と近ければ背景とみなし白で塗りつぶし、 物体だけを表示した画像を生成するようなプログラムです。 1枚のみの画像は以下のプログラムで作動しますが、連続した画像(01.bmp 02.bmp ・・・・100.bmp) を読み込み上記の処理をする場合にはどうすればよいのでしょうか? 分かりにくくて申し訳ないですが、よろしくお願いします。 #include "BMPData.h" #include <math.h> int main(){ int a=150; int i,j; int r,g,b; int ir,ig,ib; int diff; BMPStruct bmp_bg; BMPStruct bmp_oj; BMPStruct bmp; RGB rgb_bg; RGB rgb_oj; RGB rgb; RGB rgb_w; rgb.r = 255; rgb.g = 255; rgb.b = 255; rgb_w.r = 0; rgb_w.g = 0; rgb_w.b = 0; readBMP(&bmp_bg, "back.bmp"); //背景画像の読み込み readBMP(&bmp_oj, "01.bmp"); //対象画像の読み込み makeBMP(&bmp,640, 480, rgb); //出力用画像を生成する for(i=0; i<640; i++){ for(j=0; j<480; j++){ getColor(bmp_bg, &rgb_bg,i,j);  //背景画像の色を取得 getColor(bmp_oj, &rgb_oj,i,j);  //対象画像の色を取得 //rgbそれぞれの値の差 r = rgb_bg.r - rgb_oj.r; g = rgb_bg.g - rgb_oj.g; b = rgb_bg.b - rgb_oj.b; //絶対値 ir = abs(r); ig = abs(g); ib = abs(b); //色の差 diff = ir + ig + ib; //背景かどうかの判定 if(diff>a){ putColor(bmp, rgb_w, i, j); //色の差が大きければ出力画像に対象画像の色をそのまま出力 } else{ putColor(bmp, rgb, i, j); //色の差が小さければ白を出力 } } } writeBMP(bmp, "image01.bmp"); }

専門家に質問してみよう