24ビットのビットマップファイルがあります。中身はモノクロなので
1ビットへ変換したいのですが方法を教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

ごめんなさい質問の趣旨を勘違いしてました。

m(__)m

C、C++で変換したいのでしたね
こんなページを見つけました。
”クリップボードのビットマップをグレイに”
ソースファイルも置いてあるようなので参考まで

参考URL:http://www.hcn.zaq.ne.jp/no-ji/tool/tool.htm
    • good
    • 0

何を聞きたいのは良く分かりません.


現在どこまでできて(分かってて),どこでつまづいているのでしょうか?
ファイルフォーマット?C/C++?
    • good
    • 0

ペイントブラシでも変換できます。


名前を付けて保存を選び
ファイルの種類から「モノクロビットマップ」で出来ます。
ただしこの機能はあんまりよくない(希望するような変換にならない)ので
JTrimというフリーソフトをおすすめします。
メニューから「カラー」->「色解像度の変更」でできます。

参考URL:http://www.vector.co.jp/soft/win95/art/se108932. …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qビットマップハンドルからビットマップボタンを作りたいです

MFC初心者です。どうかよろしくお願いいたします。
環境はVC++6.0 MFC ダイアログベースです。

HBITMAP hBitmap;

hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), (LPCTSTR)sSaveFile,IMAGE_BITMAP, 0,0,LR_LOADFROMFILE);

を使ってビットマップハンドルを取得しました。

ここからボタンに貼り付ける方法がわかりません。
リソースにボタンを作った後、どのようにすれば良いでしょうか?

あと、ボタンの好きな位置にビットマップを貼り付ける方法も教えていただけると幸いです。

Aベストアンサー

あら惜しいとこまで……。

クラスウィザードでボタンのメンバ変数を追加しましょう。タイプはCButtonで。

ほいで OnInitDialog あたりで CButton::SetBitmap メソッドなんかを呼び出すのが手っ取り早い方法です。
(ボタンにはBS_BITMAPスタイルを忘れずに)

あと、表示を細かく調整したいならオーナードローになるかと。

Q24ビットのWaveデータの中身について

バイナリ表示ソフトで中を覗いて、
3バイトずつ入っていることまで確認できたのですが、
実際10進数に直すとどうしても数値と波形が合いません。
一番左が符号だとすると正側に波形の山を波形ソフトで描き
データを見ると000000,84D30E,EF3D24,64A53A,000000
となっていて64A53Aだけ他の2つと符号が違うのですが
24ビットのWAVEデータを数値にするにはどうすればいいんでしょうか?
3バイトずつ読み取るのがそもそも間違ってるんでしょうか?

Aベストアンサー

24bitのWaveデータと言うならば、今、巷に出回っているのは「Roland 24bit WAVE/MP3 RECORDER R-09HR」で使われている「96kHz リニアPCM 24bit モノラル(1チャンネル)」だろうと思われます。

本当であれば、サンプリング周波数の「96kHz」とチャンネル数の「1」は、Waveファイルのヘッダを見ないと決められないのですが「今、実際に多く使われているのは、96kHz リニアPCM 24bit モノラル(1チャンネル)だけと言っても過言ではない」ので、もう、そうだと仮定しちゃいます。

このデータは、1データ24ビットの1チャンネルですから、量子化データは
[[LowByte][MiddleByte][HighByte]][[LowByte][MiddleByte][HighByte]][[LowByte][MiddleByte][HighByte]]…………
と言うバイト並びで並んでいます。

バイト並びが
00 00 00 84 D3 0E EF 3D 24 64 A5 3A 00 00 00
であれば、実際の量子化データは
000000 0ED384 243DEF 3AA564 000000
です。

Low-Middle-Highで1セットなので注意して下さい。

24bitのWaveデータと言うならば、今、巷に出回っているのは「Roland 24bit WAVE/MP3 RECORDER R-09HR」で使われている「96kHz リニアPCM 24bit モノラル(1チャンネル)」だろうと思われます。

本当であれば、サンプリング周波数の「96kHz」とチャンネル数の「1」は、Waveファイルのヘッダを見ないと決められないのですが「今、実際に多く使われているのは、96kHz リニアPCM 24bit モノラル(1チャンネル)だけと言っても過言ではない」ので、もう、そうだと仮定しちゃいます。

このデータは、1データ2...続きを読む

Qテキストでかかれた数式をビットマップに変換したい

1/(5*7)+1/(7*9)+1/(9*11)というテキスト文の数式を
bmpやjpgで整式化された形に変換するライブラリーってないでしょうか?(参照:添付ファイル)

いろいろと調べてみましたが、LaTex経由のツールはたくさんあるものの、
プログラム的に直接上記変換を実行できるものはない?ようです。


スクラッチから自作も試みてみたのですが、思ったより難しくて閉口しております。

このあたりの事情について詳しい方がおられましたら、よろしくご教示くださいませ。

Aベストアンサー

既存のものだけどこういうのはどうでしょうか?

http://hooktail.maxwell.jp/cgi-bin/mathimg.cgi

Qビットマップファイル生成(C言語)

64個の整数(ピクセルの色データ)をファイルin.txtから読み込み、8×8のサイズのビットマップファイルout.bmpを生成するプログラムを作っていますが、なんだか良くわかりません。
64個の整数をすべて256にすれば青になると言われたのですが、黒になってしまいます。
一応ビルドと実行はできました。
自分で作ったソースは↓です
http://www.geocities.jp/c_prog2011/file_2.txt
一応問題文は↓です
http://www.geocities.jp/c_prog2011/bitmap_1.txt

よろしくおねがいします。

Aベストアンサー

質問者のソースをいじって、ファイルからではなく直接値を入力して
8×8のデータを作ってみました。
後はファイルから読み込むのは自分でやってください。
簡単ですから・・・

ちなみに質問が青にしたかったみたいなので青一色です。
それとヘッダで指定ビットを32に変更しました。
課題が4バイトと指定があったので。

#include <stdio.h>
#include <stdlib.h>

#define HEIGHT 8
#define WIDTH 8

#define COLOR_R (0x00FF0000) //赤
#define COLOR_G (0x0000FF00) //緑
#define COLOR_B (0x000000FF) //青

int main(void)
{
FILE *bmp;

int i;
unsigned int bitmap[64];
unsigned char bmpHeader[54] = {
'B', 'M', /* [ 0] ファイルタイプ */
246, 0, 0, 0, /* [ 2] ファイルサイズ */
0, 0, 0, 0, /* [ 6] 予約 */
54, 0, 0, 0, /* [10] ビットマップデータのシーク位置 */
40, 0, 0, 0, /* [14] ここから始まるヘッダの高さ */
8, 0, 0, 0, /* [18] ビットマップの幅 */
8, 0, 0, 0, /* [22] ビットマップの高さ */
0x01, 1, /* [26] プレーン数 */
32, 0, /* [28] 1ピクセルあたりのビット数 (課題が4バイト指定されていたので32bitに変更) */
0, 0, 0, 0, /* [30] 圧縮タイプ */
192, 0, 0, 0, /* [34] ビットマップデータの長さ */
0x20, 0x2e, 0, 0, /* [38] 水平解像度(px/m) */
0x20, 0x2e, 0, 0, /* [42] 垂直解像度(px/m) */
0, 0, 0, 0, /* [46] カラーインデックス数 */
0, 0, 0, 0, /* [50] 重要なカラーインデックス数 */
};

bmp = fopen("out.bmp", "wb");

if(bmp == NULL) {
printf("入力ファイルがオープンできません\n");
exit(1);
}

//直接色の値入力
for(i=0; i<64; i++)
bitmap[i]=COLOR_B;
//一応お約束
fseek(bmp, 0L, SEEK_SET);
fwrite(bmpHeader, 1, 54, bmp);
fwrite(bitmap, 4, 64, bmp);

//ファイル閉じましょうね!
fclose(bmp);

return 0;
}


必要なところ以外はいじっていませんが、
あとはご自分でどうぞ!

質問者のソースをいじって、ファイルからではなく直接値を入力して
8×8のデータを作ってみました。
後はファイルから読み込むのは自分でやってください。
簡単ですから・・・

ちなみに質問が青にしたかったみたいなので青一色です。
それとヘッダで指定ビットを32に変更しました。
課題が4バイトと指定があったので。

#include <stdio.h>
#include <stdlib.h>

#define HEIGHT 8
#define WIDTH 8

#define COLOR_R (0x00FF0000) //赤
#define COLOR_G (0x0000FF00) //緑
#define COLOR_B (0x00...続きを読む

Qビットマップファイルの読み書き(C言語)

以下のサイトの関数を利用させていただき、ビットマップファイルの読み書きを行ったのですが、
書き出されたビットマップファイルが0バイトのデータなしファイルになってしまいました。
読み込まれた画像データのRGB値を変更するなどの処理を行いたいので、RGB値を操作するにはどうすればよいかなども、
具体的に教えていただければ幸いです。

以下、作成したmain関数です。
int main(void)
{
Picture* bmap;
FILE *filepass;

if((filepass = fopen("test.bmp", "rb"))==NULL){
printf("file open err\n");
exit(0);
}
bmap = getBmp(filepass);

filepass = fopen("test2.bmp", "wb");
bmap = putBmp(filepass, bmap);

fclose(filepass);

return 0;
}

他力本願で申し訳ないのですが、ご回答をお願いします。

以下のサイトの関数を利用させていただき、ビットマップファイルの読み書きを行ったのですが、
書き出されたビットマップファイルが0バイトのデータなしファイルになってしまいました。
読み込まれた画像データのRGB値を変更するなどの処理を行いたいので、RGB値を操作するにはどうすればよいかなども、
具体的に教えていただければ幸いです。

以下、作成したmain関数です。
int main(void)
{
Picture* bmap;
FILE *filepass;

if((filepass = fopen("test.bmp", "rb"))==NULL){
printf("file open ...続きを読む

Aベストアンサー

私自身のHPの例題です。
http://a-gamyl.hp.infoseek.co.jp/Clang/winbip.html


人気Q&Aランキング

おすすめ情報