2017-03-16 13 views
-2

私はvs2015を使用していますが、win32のC++コンソールアプリケーションを作成しました これは純粋なネイティブC++アプリケーションを提供しています。 このデモコードは機能しません。lenna.pngまたはlenna.jpgの読み込みに問題がありますcimg load lenna image

イメージファイルが認識されないエラーが発生するたびに、 (私はウィキペディアの元のlennaを使っていましたが)パスの問題を除外するために何か不明な理由で作業しませんでした。でもlennaを "d:\ lenna.jpg"に置いていました。

私はなぜそれが仕事、任意のアイデアを失うか分からないのですか?

cimgはちょうど古いですし、最近のjpgを認識しませんか?

#include "CImg.h" 
#include "stdafx.h" 
using namespace cimg_library; 

int main() { 
CImg<unsigned char> image("D:\\CODE\\Cimg-prj\\PGT\\Debug\\Lenna.png"), visu(500,400,1,3,0); 
const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 }; 
image.blur(2.5); 
CImgDisplay main_disp(image,"Click a point"), draw_disp(visu,"Intensity profile"); 
while (!main_disp.is_closed() && !draw_disp.is_closed()) { 
    main_disp.wait(); 
    if (main_disp.button() && main_disp.mouse_y()>=0) { 
    const int y = main_disp.mouse_y(); 
    visu.fill(0).draw_graph(image.get_crop(0,y,0,0,image.width()-1,y,0,0),red,1,1,0,255,0); 
    visu.draw_graph(image.get_crop(0,y,0,1,image.width()-1,y,0,1),green,1,1,0,255,0); 
    visu.draw_graph(image.get_crop(0,y,0,2,image.width()-1,y,0,2),blue,1,1,0,255,0).display(draw_disp); 
    } 
} 
return 0; 
} 

私は(すべての出力)を取得エラー:

無効なパラメータ - "C:\ Users \ユーザーピーター\のAppData \ローカル\ Tempに\ kY6GW46A.pnm" 'gm.exe' が認識されません内部または外部のコマンドとして、 操作可能なプログラムまたはバッチファイル。 無効なパラメータ - "C:\ Users \ Peter \ AppData \ Local \ Temp \ as88yC80.pnm" 'gm.exe'は、内部または外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されません。 無効なパラメータ - "C:¥Users¥Peter¥AppData¥Local¥Temp¥wa804U6G.pnm" gm.exeは、内部または外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されません。

[CImg] * * * CImgIOException * * * [インスタンス(0,0,0,0,00000000、非共有)] CImg :: load():ファイル 'Lenna.png'の形式を認識できませんでした。 。

私はLenna.pngが有効なpngファイル であることを確信しています(拡張子の名前をirfranviewに変更すると、その名前をpngに戻そうとします)。

私はzlibとlibpngをダウンロードしましたが、プロジェクトにそれらを追加する方法がわからない、pngのプロジェクトを正しく設定するという複雑さのために動作しないかもしれません。これらのファイルをすべて追加する必要がありますか?)

+0

*コードをインデントしてください。 –

+0

私は長い行が読めなくなるのではないかと心配していました。コードは1行につき1コマンドほど短いので、このように書いています。 – user3800527

+0

私には信頼できます。あなたがする必要がある場合は、長い行を分割します。 –

答えて

0

ImageMagickに依存せずにCImgがPNGファイルを読み込めるようにするには、マクロの前にCImgヘッダーファイルをロードします。

#define cimg_use_png 1 
#include "CImg.h" 

PNGの圧縮には、ライブラリGDI32とlibpngおよびlibzもリンクする必要があります。

+0

別の例(オウムの例)では、GDI32をリンクしていませんでした これはpng/jpgを読むための要件ですか? (まだ、あなたの答えをテストしなければならない、それは後で今働くかどうかを確認する) – user3800527

+0

これまでのところ、私はそれを働かせることができません、私はちょうどcimgから始まっています。 その明確なapperently zlibとlibpngは、私が追加できるdllのほんの一部ではありません。 これを行うには、例のコードを知っていますか? 私は、ミキサーレンダリングされた画像用の新しいフィルタを作成しようとしています。 私は画像の数学を工夫しましたが、cimgが頭痛の原因になりました – user3800527

+0

申し訳ありませんが、私はVisual StudioやWindowsを使用していません - LinuxやMacではうまく動作し、CImgの日付は間違いありません。私は周りを見て、GDI32以外のWindows固有のものを見つけることができるかどうかを確認します。 –