質問: j + y; if (xt < 0 || yt < 0 || xt >= bmp->height() || yt >= bmp->width()) continue; bmp->setColor(xt, yt, r, g, b); } } } /* * メイン処理 */ int main() { BitMapProcessor bmp; // ビットマップデータのロード bmp.loadData("filename"); // ビットマップ情報の表示 bmp.dispBmpInfo(); // テスト1. モノクロ化 twoTone(&bmp); bmp.writeData("kii_1.bmp"); bmp.restore(); // テスト2. 指定範囲の切り出し extractArea(&bmp, 200, 300, 100, 180); bmp.writeData("kii_2.bmp"); bmp.restore(); // テスト3. 色反転 invert(&bmp); bmp.writeData("kii_3.bmp"); bmp.restore(); // テスト4. モザイク mosaic(&bmp, 30); bmp.writeData("kii_4.bmp"); bmp.restore(); return 0; } ``` ### 試したこと visualstudioのソースファイルにkii.bmpを貼り付け "C:\Users\shinohara yuki\source\repos\BMPcut\ver5.14\kii.bmp" にkii.bmpを貼り付け ### 補足情報(FW/ツールのバージョンなど) http://techtipshoge.blogspot.com/2011/07/blog-post_23.htmlより引用
回答: `fread`にて`stream != nullptr`のアサートが失敗しているとのことなので ファイルのオープンに失敗している事が考えられます。 > > void BitMapProcessor::loadData(string filename) { > > if (bmp != NULL) > > fclose(bmp); > > > bmp = fopen(filename.c_str(), "rb"); > > if (bmp == NULL) > > printf("ファイルオープンに失敗しました。\n"); > > > readFileHeader(); > > readInfoHeader(); > > readBmpData(); > > } > > > ここのファイルオープンに失敗した時に`printf`だけというのがまずいです。 とりあえず、ここにブレークポイントを設置して`bmp`が`NULL`かを調べるとよいでしょう。 読み込み失敗した理由としては、カレントディレクトリが想定と違う事が考えられますので `getcwd`関数で現在のカレントディレクトリを取得し確認してみるとよいでしょう。