• 締切済み

画像を縮小してビットマップ保存

http://www.vector.co.jp/soft/winnt/business/se243021.html このフリーソフトには、ビットマップで保存する機能があります。 CAD図面の一定の間隔をビットマップのピクセルとして出力したいのですが、ご存知の方はおられますでしょうか? 例)0.25μm=1pixel ちなみに保存している箇所は「gdsView.cpp」の「WriteToEmf」辺りです。 思いついた方法としては「SetMapMode」を「MM_ANISOTROPIC」に変更する方法ですが、 ・SetWindowExt ・SetViewportExt ・sz.cx ・sz.cy ※(long)((m_coordMax.x - m_coordMin.x) * m_dblDrawScale); で計算している箇所 をそれぞれどういう計算で導けば良いのかサッパリ分からない状態です。 それとも、全く違う方法でビットマップ出力すべきでしょうか? こんなわがままで解析に時間のかかりそうな質問に答えていただける方がもしおられたら、どうかよろしくお願いいたしますm(__)m

みんなの回答

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.4

Image::Saveと拡張メタファイルは、特に関係がないようですが、どのような処理になっているのでしょうか? もしかすると、ビットマップに拡大したイメージを描きたいということなのでしょうか? それなら、確かにMapMode等の設定でうまくいきそうですが・・・。 まずは拡張メタファイルを使わずに、単純なラインなどで試してみてはどうでしょうか。そのほうが質問に対する回答もつきやすいと思います。

ya-cha
質問者

お礼

>Image::Saveと拡張メタファイルは、特に関係がないようですが、 「GdiplusMetafile.h」を確認してみてください。 「class Metafile : public Image」があります。 わざわざ回答いただいたので申し訳ないのですが、ご存知でないのでしたらもう結構です。 質問も締め切ります。

全文を見る
すると、全ての回答が全文表示されます。
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.3

>画面の座標を元にRectを生成して、拡張メタファイルを作成し、 >GDI+のImage:Saveメソッドで保存しています。 なんだか面倒そうな方法ですが・・・・。 拡張メタファイルは何に使っているのでしょう? ビットマップを作成して、StreatchBltでできないでしょうか?

ya-cha
質問者

お礼

>拡張メタファイルは何に使っているのでしょう? GDI+のImage:Saveメソッドのために使っています。 >ビットマップを作成して、StreatchBltでできないでしょうか? 具体的にどのように行うのですか? 「ビットマップを作成して」というのは、ビットマップのデバイスコンテキストを作成するという意味でしょうか?それともビットマップファイルを作成するという意味でしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

>上記フリーソフトに既に組み込んでありますので。 現状はどのような方法で行っているのでしょうか?

ya-cha
質問者

お礼

画面の座標を元にRectを生成して、拡張メタファイルを作成し、 GDI+のImage:Saveメソッドで保存しています。 ご存知でしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

縮小せずに保存する方法は、もうご存知なのでしょうか?

ya-cha
質問者

お礼

はい。 上記フリーソフトに既に組み込んでありますので。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 画像の縮小をすると粗くなってしまいます

    640×480pixelのピクチャボックスに ビットマップファイルを読み込み print メソッドで文字を出力してから 120×120pixelのピクチャボックスに StretchBlt を使用して縮小表示していますが、 画像が粗くなり文字が読み取れなくなって困っています。 すっきりきれいに縮小表示する方法があれば教えてください。 よろしくお願いします。

  • 複数画像を同時に縮小保存

    デジカメ画像100枚を一瞬で同時縮小する方法やソフトはありますか? 更に欲を言えば、 同時に別名保存する方法やソフトはありますか? 例えば、 aaa0001.jpg 2M 2560x1920 ~~~ aaa0100.jpg 2M 2560x1920 ↓ ↓               ~~~  ↓ ↓ bbb0001.jpg 5KB 120x90 ~~~ bbb0100.jpg 5KB 120x90 なければ、 これらを一番効率良く保存する方法をアドバイス下さい。

  • つくった画像をBMP形式に保存するときに4bitで保存するには?

    仕事でビットマップ形式の画像をつくらないといけないのですが、 つくった画像をBMP形式に保存するときに4bitで保存するにはどうしたら 良いでしょうか? もともとはイラストレーターで制作されたデータなので、ai形式やeps形式で 保存されています。それをPhotoshopの7やCS2で開いて、photoshop上で bmp形式で保存しました。 すると保存される前に「BMPオプション」というダイヤログボックスが 出て、そこでbitを選択できるようになってはいるのですが、選択可能な bitは、「16bit」「24bit」「32bit」だけなのです。 「1bit」「4bit」「8bit」も薄い字で項目としてはあるのですが、 何故かこの三つのbitは薄い字になっていて選択が出来なくなっています。 Photoshopではダメでも構いません。何か他のソフトで4bitにするにはどう したら良いでしょうか。 ちなみに、96dpiで100ピクセルほどのサイズの画像を4bitで保存 しようとしています。 宜しくお願い致します。

  • 画像の保存方法

    こんな質問で申し訳ないんですが、インターネットのフリー素材でCDやDVDに印刷できるものを保存したんですが、印刷するソフトを立ち上げて素材を入れたファイルを呼び出しても、ビットマップ形式のものしか読み込みません。 そこで、GIF形式のものをビットマップ形式にまとめて変更する方法はないでしょうか?色々調べてみたけどひとつずつ変更する方法や、ビットマップ→GIFなどはたくさん載っていたんですが、GIF→ビットマップや、まとめて変更する方法はどこにも載っていませんでした。そんな方法はないんでしょうか・・・? パソコンにあまり詳しくないのでお手数おかけしますが、初心者でもわかるように説明していただけたらうれしいです。 WINDOWS XPです。印刷するソフトはEPSONのプリンタを買ったときについてきたものです。(EPSON Mluti-Print Qickerという名前です。)

  • PlgBltで画像の回転

    WINAPI:PlgBltにてビットマップ画像を回転させるソフトを作成中ですが、 画像サイズが大きくなると(5000x5000Pixel)、関数の戻り値自体は成功しているのですが、結果ビットマップ画像を見てみると真っ黒になってしまい、うまくいきません。 原因と対策方法を教えて下さい。 ちなみに、画像サイズが小さいと(100x100Pixel)うまくいきます。 尚、 OS:XP SP2 開発環境:Visial Stadio6.0 です。

  • 画像加工してJPEG形式で保存したい

    画像とデザインを組み合わせてポスター状のものを作ろうとしています。 最終的にはJPEGで保存することが前提です。 現在、こういう方法です。 (1) POWERPOINT で 写真挿入、文字入れしてデザインし、それをJPEG形式で出力。 (2) この時点でJPEGファイルのサイズは、960 X 720 PIXEL なのですが、これを960 X 360 にサイズ変更したいので、MS Office Picture Managerで開く。 ここで、明らかに画像の画質が落ちてしまいます。これはどうしてでしょうか。 これを避けるのはどうしたら良いでしょうか。 あるいは、フリーソフトで、写真、文字を組み合わせたデザインのポスターを作るより良い方法がありましたら、御教示ください。 よろしくお願いいたします。

  • ビットマップ画像をRGB値でエクセルに出力したいんですが・・・

    ビットマップ画像を取り込んで、1ピクセル毎のRGB値をエクセルに出力したいのですが、そのようなプログラムがわかる方やフリーソフトがありましたら教えて下さい!!! C#っていうのが一応手元にあります。 全くの素人でわかりづらくて申し訳ありません。。

  • 地図の上にL字スケールを描画

    MDIフレーム上に、複数のチャイルドスタイルのダイアログが存在するプログラムを改造しました。(元は別の人間が作成) その中にMapDKIVの地図を描画しているダイアログがあり、その地図上に別のダイアログをおき、そこに縮尺L字スケールのビットマップを描画しました。(MapDKIVには、その機能がまだ無い為) 色々と試行錯誤した結果、この方法を取ったのですが、納品した矢先、お客様から、地図をマウスでドラッグして動かそうとすると、スムーズに動いたり、カクカクとしか動かなかったり、時には全く動かない事があるとのクレームがありました。(その操作以外は正常に動作している模様) 以前はこの症状はなかったとの事から、今回のL字スケール描画に原因があるのではと調べていますが、原因が見付かりません。 以下に、ソースの一部分を記載しますので、どなたか助言をお願いします。 ******** ビットマップデータ管理クラス ******** ビットマップは、スケール毎に準備 <BitmapData.h> private: CBitmap m_bmpLScale0; CBitmap m_bmpLScale2; <BitmapData.cpp> //-------- 機能 ビットマップ情報の読込 -------- void CBitmapData::Load(void) { m_bmpLScale0.LoadBitmap(IDB_BITMAP_SCALE0); // 全国図 m_bmpLScale2.LoadBitmap(IDB_BITMAP_SCALE2); // 1/160万 //-------- 機能 ビットマップ情報の取得 -------- CBitmap& CBitmapData::GetScaleBitmap(void) { UINT unIndex = GetScaleNumber();// 現在選択されているスケールレベル switch(unIndex) { case 0:  return m_bmpLScale0; break; // 全国図 case 2:  return m_bmpLScale2; break; // 1/160万 ******** 地図描画ダイアログ ******** L字スケール描画用ダイアログの生成 <MainMap.cpp> // 地図描画フレームサイズを取得 m_ctrlMapFrame.GetWindowRect(LPRECT(rect)); // スケールレベルをセット g_BitmapData.SetScaleNumber(m_ctrlMapZoom.GetPos()); // スケール描画用ダイアログの生成(地図フレームの左下位置を渡す) m_pMapScaleDlg = new CMapScaleDlg(); m_pMapScaleDlg->Create(m_hWnd, IDD_MAP_SCALE_DIALOG, ・・・ ******** L字スケール描画ダイアログ ******** //-------- 機能 OnInitDialog() -------- // ウインドウ拡張スタイルをレイヤード設定 lStyle = GetWindowLong( this->m_hWnd, GWL_EXSTYLE ); lStyle |= 0x00080000; SetWindowLong( this->m_hWnd, GWL_EXSTYLE, lStyle ); // レイヤードウィンドウの不透明度と透明のカラーキーを設定(青色部分を透明化する) SetLayeredWindowAttributes( this->m_hWnd, RGB(0,0,255), 100, 0x00001/*LWA_COLORKEY*/ ); //-------- 機能 OnPaint() -------- BITMAP bitmap; CBitmap& mBitmap = g_BitmapData.GetScaleBitmap(); mBitmap.GetBitmap(&bitmap); CSize sz(bitmap.bmWidth, bitmap.bmHeight); CDC dc; dc.CreateCompatibleDC(&PaintDC); CBitmap *pOld = dc.SelectObject(&mBitmap); // もともとのディバイスコンテキストにビットマップを透過で転送(青色部分を透明化する) if( ::TransparentBlt(PaintDC, 0, 0, sz.cx, sz.cy, dc, 0, 0, sz.cx, sz.cy, (UINT)RGB(0,0,255)) == FALSE ){ } // ビットマップ選択解除 dc.SelectObject( pOld); } //-------- 機能 スケール(ビットマップ)変更メッセージを受信 -------- // 現在選択されているスケール用のビットマップを取得(ポインタ) CBitmap& mBitmap = g_BitmapData.GetScaleBitmap(); mBitmap.GetBitmap(&bitmap); CSize sz(bitmap.bmWidth, bitmap.bmHeight); // メインマップダイアログの地図フレームの左下になるよう変更 this->MoveWindow(m_nMapFrameLeft, (m_nMapFrameBottom - sz.cy), sz.cx, sz.cy); // ウインドウの再描画 this->Invalidate(); 1.L字スケール描画用のダイアログを、背景青色で準備 2.L字スケール描画用のダイアログの青色部分を透明化に設定 3.L字スケール描画用のダイアログのウインドウサイズを、選択されているスケール用のビットマップと同じサイズに、且つ、地図フレームの左下に位置を設定 4.地図ダイアログからスケール変更メッセージを受信  (1) その時に選択されているスケール用のビットマップと同じサイズに、且つ、地図フレームの左下に位置を設定  (2) ウインドウの再描画 this->Invalidate() 5.OnPaint()  (1) 現在選択されているスケールのビットマップ情報を取得  (2) ビットマップを透過で転送(青色部分を透明化)    ビットマップのL字以外の部分は青色 以上、文字数制限の為、かなり省略していますが、大変困っています。 とにかく助言を頂きたく、よろしくお願いします。

  • 画像のサイズの縮小方法は??

    デジカメでとった写真をPCカードで取り込み、そのサイズを縮小したいのですが、今まではデジカメの達人で開いた画像(jpeg)を「ペイント」で読み込んでツールの「変形」からサイズダウンしていました。それで今までは「名前を付けて保存」にするとjpegのままできたのに、なぜかあるときから、ビットマップでしか保存できなくなってしまったのです。なぜでしょう??保存の形式の選択肢の中にも、jpegはないのです…。できれば同じ方法(ペイント)で今後もサイズダウンしたいのですが、どうしたらjpeg形式で保存できるのか教えてください。フリーソフトなどをダウンロードしたら??とも言われるのですが、どれもうまく使えず、困っています。

  • 画像の編集について教えて下さい

     仕事でスキャナーで取り込んだ画像の編集について困っています。 白黒の書類からビットマップ形式で保存したもの(824×550ピクセルの1328KB位)を透過でかつ画像の質を落とさず100KB位にしたいのですが、いい方法ありませんか?フリーソフトなどで自分なりに調べて試しているのですが、うまくいきません(困)。ほとんど画像の編集・加工をしたことがないのでどうしたらいいか困っています。宜しく御願い致します。何分PCにあまり詳しくないので、説明が足りない点がありましたら教えて下さい!