• ベストアンサー

デスクトップ画面をpng形式で保存する

こんにちは、開発環境:VS2005, 言語:VC++, ATLプロジェクトにて プログラムを作成しています。ActiveXとして使用予定です。 C++ はまったくの初心者です。 いろいろ調べつつ、Bitmap形式での出力は成功しました。 が、やはりファイルサイズが大きいので、できればpngで出力したいと考えています。今のBitmapでの出力プログラムからはpng出力に変更できないみたいです(?) 参考サイトや方法をご存知の方おられましたら、宜しくお願いします。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★アドバイス ・CImageクラスのSaveメソッドでどうでしょうか。  http://msdn.microsoft.com/ja-jp/library/d06f3fhw(VS.80).aspx→『CImage::Save』  ↑  MFC/ATLで共有されるクラスとなっています。 ・あとPNG形式ならGDI+で読み書きできたと思います。  次のサイトを参考にして下さい。  http://www.geocities.jp/ccfjd821/purogu/wpe-ji9.html→『JPEG(ジェイペグ)やGIF(ジフ)を表示しよう^0^』  ↑  下のほうのソースです。

osiete8739
質問者

お礼

ご回答ありがとうございます。 いろいろな方法があるようですが、 http://www.geocities.jp/ccfjd821/purogu/wpe-ji9.html にいろいろ書いてありますので、こちらを参考にさせていただきます。 「CImageクラスのSaveメソッド」というのは便利そうなのですが、 何かデメリットなどあるのでしょうか。 上記サイトでも登場していません。 また、経験者ということですので、どの方法がよいと思われるか ご意見いただけたらお願いします。

その他の回答 (3)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★アドバイス >何かデメリットなどあるのでしょうか。  ↑  日本語のマニュアルがMSDNで少ない。  英語サイトならたくさん存在します。 ・自分の過去回答より。  http://oshiete1.goo.ne.jp/qa3210186.html→『CImgae』  http://ayusya.hp.infoseek.co.jp/ProgramCTip.html#ImageTest→『VC++7.0のCImageクラスを使う』

参考URL:
http://msdn.microsoft.com/ja-jp/library/aa984108(VS.71).aspx
osiete8739
質問者

お礼

追加のご回答有難うございます。 教えていただいたサイトを参考にメソッドにて実装したいと思います。 また、何かありましたら宜しくお願いします。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2
osiete8739
質問者

お礼

ご回答ありがとうございます。 このようなライブラリがあるんですね。参考にさせていただきます。 ちなみにこれはメジャーなライブラリなのでしょうか?

  • sobacya
  • ベストアンサー率11% (1/9)
回答No.1

自分はPNG形式のライブラリとか聞いたことがありません。 フォーマットを自分で調べて作っていくしかないと思います。 ここなんて参考になるんじゃないでしょうか。

参考URL:
http://www.river.sannet.ne.jp/yuui/fileformat/png.html
osiete8739
質問者

お礼

ご回答ありがとうございます。 なにやら難しそうです。。参考にさせていただきます。

関連するQ&A

  • C++を使用してJPEG保存

    いつもお世話になっています。 Visual C++ 2008(MFC使用)で開発を行っているのですが、 画面キャプチャーをJPEG保存する方法が今ひとつ分かりません。 Bitmap形式は簡単にできますが、JPEGは難しそうでした。 最終的にはHTML形式に出力するので、PNG、GIF形式による出力でも 結構です。 よろしくお願いします。

  • mp3形式やpng形式の使用など…技術の勉強など

     情報処理系の専門学校で、プログラミングを勉強しはじめて、1年くらいの経験です。CやJAVAを勉強してまいりました。  枠から外れた質問になるかもしれませんが、宜しく御願します。  折角だから何かの役に立つアプリケーション(今はゲーム)をつくろうと思い、APIやDirectXの本に目を通し、それなりに理解ができてきたと思います。  ゲーム系に進路へ舵を動かつもりはないのですが、(マルチメディアに限らず)高度な技術に手を伸ばしたいと考えています。今現在はCプログラミングで、マウスでできるような簡単なゲームを作ろうとしています。  しかしながら、APIやDirectXなどの入門書に目を通しましたが、自分の思うような技術が見当たらないのです。たとえばタイトルにもある形式です。  BMPやWAVE、MIDIではなくmp3やpngファイルを使用したいと思いましたが、ネットワークを介して調べても扱い方が書いてありませんでした。やむを得なく、BMPとMIDIに切り替えて、プログラム設計をしています。  前に、フリーゲームでMP3やPNGを使用しているプログラムを見かけましたがどのような方法をとれば、C言語で扱うことができるのでしょうか?  余談ですがゲーム開発のCGは会社独自の画像形式を扱ってるなど、プログラムは深淵極まりない世界に感じます。  そのような高等技術の勉強を独学ですることは不可能なのでしょうか?書籍をあさって目ぼしい物が見当たりません。アドバイスを御願します。

  • PNG形式の画像データを並べる方法を教えて下さい。

    横3cm(チェック)縦4cmの画像データ(PNG形式)があります。 これを適当な大きさ(おそらくL版とか)に複数枚並べて、 街中のプリントサービスで、出力したいと考えています。 画像のサイズを変えずに(出力した時に、1つの写真が元の3cm(チェック)4cmのママで) 劣化せずに、L版に画像を並べる方法があったら教えて下さい。 そのために、フリーソフトで必要な物があれば、教えて下さい。 よろしくお願いいたします。

  • RGB値を画像(PNG・BMPJPEGなど)に出力したい

    配列に格納したRGB値からPNG画像(またはBMP画像JPEG画像)を作成したいと思っているのですが、画像ファイルの作り方がわかりません。 ファイルを作成⇒ヘッダ書きこみ⇒色情報書き込み と、漠然とした手順しかわかりません。 詳しい方法、または参考URLがわかる方、アドバイスお願いします。 以下補足です。 ・開発環境はwindowsXPのVC7でC言語を使っています。 ・openCVで適切な関数があれば助かります。 (openCVのIplImageの読み込みなども参考にしようと思いましたがxmlファイルからの取得とは違うのでわかりませんでした。)

  • ATLについて

    ATLを理解するため ATLをつかった簡単なサンプルプログラムを探しているのですが 参考になるサイトや良い書籍があればアドバイスお願い致します。 「com化しておくと便利」とか聞くのですが いまいちピンときません。 DLLとは何が違うのでしょうか? com,ATL,ActiveXについて、関連があると思うのですが その関連についても分かり易くご教授頂ければ幸いです。

  • CSV形式に変換

    プログラミング(C言語)で、ファイルの内容をCSV形式に変換し、指定した出力ファイルに出力するプログラムを作成せよ。という課題がありましたが、 ファイルの内容をCSV形式に変換 がわかりません。どのようなプログラムをかいたらよいのでしょうか?

  • Windowsアプリケーションのお勧め開発言語について

    vectorなどで公開できるような、Windowsアプリケーションを開発したいと考えています。 皆様のお勧めの開発言語・開発環境を教えて頂けますでしょうか。 条件は、ランタイムが不要なことです。(なのでVB.Netなどは対象外です。) はじめは、TurboDelphiを考えていたんですが、今はフリー版が配布されていないようなので、 VC++のATL/WTLを使うのが良いのかなと思っています。 (正直、またWin32、MFC、ATL、WTLの違いも理解できていませんが、、、) 何かお勧めがありましたら御教授ください。

  • VC++ ヘッダ・ソースのみで再構築は可能ですか?

    C++で開発されたアプリを再構築する事になりましたが、納品時のヘッダとソースファイルしかありません。プロジェクトファイルやビルド環境のファイルも何もありません。まさしくヘッダとソース(cpp)しかない状況で、開発するために再構築してデバックできる環境を整える事になりました。ちなみに、このアプリはC++言語で、開発ツールはVS6で開発されたそうです。 どのたか、再構築する方法を教えていただけないでしょうか? また、VC2010などの最新のVCで開発したいと思っておりますがそれも可能でしょうか? 過去にC言語で電話システムの開発経験はありますが、Windowsでのアプリ開発の経験はほとんどありません。 以上、よろしくお願いいたします。

  • VS2003とVS2005におけるActiveXの違いについて

    お世話になります。 テンプレートのまま何も追加してない 空っぽのActiveXに署名してFreeBSDに置いて Windowsから実行しようとしています。 ひと月ほど前にVS2003で上記のことを行い、 XPからIE6,IE7,IE8で動作を確認しました。 最近、VS2005で同様のことを行ったところ、 XP+IE6でインストールまで成功するものの、 実行されないという現象が起こりました。 ※インストールの成功は  C:\Windows\Downloaded Program Filesに  入っていることで確認。  また、サーバのHTMLをローカルにコピーすると  正常にActiveXが実行可能。 そこで、もう一度VS2003に戻ってひと月前と 同じ手順でプロジェクトを作ったところ、 新しいプロジェクトで作ったActiveXも、 VS2005版と同じ現象が起こりました。 その際のエラーログは、次のようになりました。 ------------------------ 以下ログ ------------------------ *** Code Download Log entry (26 Jun 2009 @ 13:58:12) *** Code Download Error: (hr = 800c0400) Unknown Error!! Operation failed. Detailed Information: CodeBase: http://www.xxxxx.com/Plain2003.cab CLSID: {DDC859E4-5589-47BF-B14D-71FCEA506810} Extension: Type: LOG: Reporting Code Download Completion: (hr:800c0400 (FAILED), CLASSID: ddc859e4..., szCODE:(http://www.xxxxx.com/Plain2003.cab), MainType:(null), MainExt:(null)) --- Detailed Error Log Follows --- LOG: Download OnStopBinding called (hrStatus = 0 / hrResponseHdr = 0). LOG: URL Download Complete: hrStatus:0, hrOSB:800c0400, hrResponseHdr:0, URL:(http://www.xxxxx.com/Plain2003.cab) LOG: Reporting Code Download Completion: (hr:800c0400 (FAILED), CLASSID: ddc859e4..., szCODE:(http://www.xxxxx.com/Plain2003.cab), MainType:(null), MainExt:(null)) ------------------------ ログ以上 ------------------------ 残っていたひと月前のActiveXに署名を付けて 試したところ、正常に動作しましたので、 署名を付けるプロセスについては問題ないものと 思われます。 一方、プロジェクトを作るプロセスですが、 ・新規 - ATLプロジェクト ・ソリューションエクスプローラを右クリック  追加 - クラスの追加 - ATLコントロール をしているだけです。 本当に同じように作っているか、心配なので、 ディレクトリごとDiffを取ってみると... ぜ~~んぜんちが~~~う。 とても同じ手順で作ったとは思えません。 後からVS2005を入れたせいで、 VS2003がおかしくなったのではないかと 思うくらいですが、 私が間違っているかもしれません。 目的はVS2005で動作するActiveXを作ることです。 この現象について何かお気づきの点があれば ご教授願います。

  • VC++のマネージ形式での課題で・・・。

    VC++で、ビットマットフォーマットをマネージ形式でをする。課題がでました。 課題は、ピクチャーボックスにbmpファイルを表示して、表示したbmpからボタンを使って、ラベルや、テキストボックスに、そのbmpのバイト数や、画像に関する、情報を表示する課題です。 今は、ピクチャーボックスから画像を出すことはできたんですが、その後にどうやって画像に関する色のバイト数や、情報をマネージ形式で表示するかわかりません。 プログラムつくってもエラーばっかでわかりません。 例として、ボタン1をクリックして、ボタン1でラベルにbmpのバイト数を出したいんですがエラーします。 プログラム例は、  botton1 click ・・・ { bitmap^bmp; bmp = Bitmap("bmpのファイル名"); label1->Text = bmp; }   これで、ずっとエラーします。誰か適切なアドバイスください。いろいろサイトみてもMFC形式のやりかたばかりでわかりません。 マネージ形式でのやり方を教えてください。

専門家に質問してみよう