CImageクラスを使って画像処理を行いたいです。
具体的には、
1.Load()で画像を読み込み
2.処理(画像の回転、反転とか)
3.Save()を使って画像を保存
コンパイルはできるのですが、
Debug Assertion Failed!
File: c:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\atlimage.h
Line: 978
Expression: m_hBitmap != 0
が出て途中で止まります。
どうやれば途中で止まらず実行できるようになるのでしょうか?
助言のほどお願いします。
環境はWindows XP、visual studio 2005です。
No.2ベストアンサー
- 回答日時:
>filename1="C:/a.bmp";
>filename2="C:/b.bmp";
全部ちゃんと見ているわけではありませんので
違ってたら御自分でどの段階でプログラムが
飛んでいるのかを確認してください
(デバッガの使い方を覚えてください)
Windowsで上記のファイルはありえません
filename1="C:\\a.bmp";
じゃないですか(b.bmpのほうも同じ)
ファイルが無いのでオープンエラーで飛ぶのか
その後でたらめな情報でメモリアロケートするので飛ぶのではないかと思います
まさにおっしゃられたようにファイルがなく、GetWidth()の所でエラーが出てました。ちゃんとファイルを用意すれば読み込み、保存できるようになりました。
本当にありがとうございました。
No.1
- 回答日時:
コンパイルできることが動くことではありませんので
自分で書いたコードを乗せてください
この回答への補足
以下にコード載せます。
// imageIO2.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include "imageIO2.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 唯一のアプリケーション オブジェクトです。
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// MFC を初期化して、エラーの場合は結果を印刷します。
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 必要に応じてエラー コードを変更してください。
_tprintf(_T("致命的なエラー: MFC の初期化ができませんでした。\n"));
nRetCode = 1;
}
else
{
// TODO: アプリケーションの動作を記述するコードをここに挿入してください。
CImage inimg;
CString filename1,filename2;
filename1="C:/a.bmp";
inimg.Load(filename1);
int width=inimg.GetWidth();
int height=inimg.GetHeight();
unsigned char *img1=new unsigned char[width*height*3];
for(int j=0;j<height;j++){
int addr=j*width*3;
for(int i=0;i<width;i++,addr+=3){
COLORREF c=inimg.GetPixel(i,j);
img1[addr]=GetRValue(c);
img1[addr+1]=GetGValue(c);
img1[addr+2]=GetBValue(c);
}
}
// upside down //
unsigned char *img2=new unsigned char[width*height*3];
for(int j=0;j<height;j++){
int addr1=j*width*3;
int addr2=(height-j-1)*width*3;
for(int i=0;i<width;i++,addr1+=3,addr2+=3){
img2[addr2]=img1[addr1];
img2[addr2+1]=img1[addr1+1];
img2[addr2+2]=img1[addr1+2];
}
}
CImage outimg;
outimg.Create(width,height,24);
for(int j=0;j<height;j++){
int addr=j*width*3;
for(int i=0;i<width;i++,addr+=3){
COLORREF c=RGB((int)img2[addr],(int)img2[addr+1],(int)img2[addr+2]);
}
}
filename2="C:/b.bmp";
outimg.Save(filename2);
delete[] img1;
delete[] img2;
}
return nRetCode;
}
あとstdafx.hの最後に#include <atlimage.h>を追加しました。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 「using Windows」でエラーが出る 3 2022/12/23 19:53
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- 画像編集・動画編集・音楽編集 このようなスクリーンキャプチャソフトありますか? 3 2023/01/31 16:02
- C言語・C++・C# visual studio 2019を使っているのですが、何か間違ったところをクリックしてしまい画像 2 2023/03/06 06:46
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- ソフトウェア VisualStudio のデータブレークポイントを有効にする方法 1 2023/05/01 09:42
- 一眼レフカメラ 「Imaging Edge」を手動起動せず、ARWファイルを最高画質JPEGへ変換する方法は? 2 2022/08/05 11:38
- 画像編集・動画編集・音楽編集 Native Accessのインストールが先に進みません 2 2022/09/14 13:34
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
CImage GetBitsメソッドについて
C言語・C++・C#
-
VC++プログラムをつかったBMP画像の拡大縮小について
C言語・C++・C#
-
MFCで画像を表示させているのですが、透過表示する方法がわかりません。
C言語・C++・C#
-
-
4
画面を強制的に再描画させる方法
C言語・C++・C#
-
5
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
6
StretchBlt関数について
C言語・C++・C#
-
7
CImage::Loadの戻り値は何でしょうか
C言語・C++・C#
-
8
RGBのバイナリデータをCImageにコピー
C言語・C++・C#
-
9
MFC - ダイアログボックスのPictureControlへの画像表示
C言語・C++・C#
-
10
CImageのファイル名を指定して保存
C言語・C++・C#
-
11
VC++スレッドの正しい終了のさせかた
C言語・C++・C#
-
12
ビットマップに描画をしてピクチャーコントロールに貼り付けるためには?
C言語・C++・C#
-
13
MFCでOnPaintのタイミング
C言語・C++・C#
-
14
CStringをwchar_tに変換したい
C言語・C++・C#
-
15
メニューにアイコンを付加するには?
C言語・C++・C#
-
16
画像の保存方法。
C言語・C++・C#
-
17
CImageクラスをVisualC++6.0で使いたいのですが
C言語・C++・C#
-
18
MFCでのBITMAP作成について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でヘッダファイルにグロー...
-
VBAを何回も作り直して、容量が...
-
LNK1210が出て困っています。
-
セミコロンについて
-
1 つ以上の複数回定義されてい...
-
” OS ビルド ” の意味が分か...
-
Makefile作成時の拡張子.oとは?
-
ILSpyで、デコンパイルできない。
-
<math.h>があるのにsqrtが・...
-
クリティカルエラー Expressio...
-
「fatal error C1189」を回避す...
-
漢字のコメントをはずすとコン...
-
VC++2005でのリソースコンパイ...
-
コンパイル??
-
AVRプログラム 関数から戻って...
-
エクセルVBAではRound...
-
ヘッダファイルとは?
-
USBカメラライブラリー ECWLIB...
-
COBOLプログラムからC関数を呼...
-
C++コンパイル時に『 C1083: in...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
Makefile作成時の拡張子.oとは?
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
ILSpyで、デコンパイルできない。
-
” OS ビルド ” の意味が分か...
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
C++コンパイル時に『 C1083: in...
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
コンパイルエラー:ユーザ定義...
-
ビルドとリビルドの違いを教え...
-
クリティカルエラー Expressio...
-
sys/types.hの必要性について
-
【VC++6.0(MFC)】警告「LINK : ...
-
PRO*C コンパイルエラー
おすすめ情報