BCBで画像拡大印刷: 解像度に合わせた方法はある?

このQ&Aのポイント
  • C++Builder5を使用している場合、プリンターの解像度に合わせて画像を拡大印刷する方法があるかどうか疑問です。
  • 会社で印刷する際に、会社のロゴを同時に印刷する必要があり、BMPを印刷するテストプログラムを作成しました。
  • しかし、プリンターの解像度によって画像の大きさが変わってしまい、希望通りの大きさで印刷することができませんでした。お手数ですが、解決策を教えていただければ幸いです。
回答を見る
  • ベストアンサー

BCBで画像を拡大印刷したい

C++Builder5を使っています。 会社で印刷するプリントに会社のロゴを同時に印刷したい、という要求があり、BMPを印刷するテストプログラムを作りました。 ロゴの画像は300dpiでスキャンしたものをBMPにしてファイルとして保存してあります。 ソースの抜粋は次のとおりです。 int x,y; Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); pBitmap->LoadFromFile(FLNM); //FLNMにはBMPファイル名が格納されています。 Printer()->Canvas->Draw(x,y,pBitmap); xとyは、 GetDeviceCaps(Printer()->Handle,LOGPIXELSY)でプリンターの解像度を得て、印刷位置をドットに変換済みです。 これで画像は希望する位置に印刷できたのですが、(当初から予想はしていましたが)問題があります。 プリンターの解像度によって画像の大きさが変わってしまいます。 プリンターの解像度に合わせて画像を拡大印刷したいのですが、方法はあるでしょうか? 例えば、プリンター解像度が600dpiなら縦横2倍の大きさで印刷する、ということです。 TBitmapのHeightを2倍にしてみたのですが、元の画像に余白が追加されただけで、希望通りの大きさでは印刷できませんでした。 よろしくご指導ください。

  • CLMN
  • お礼率80% (62/77)

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

  • ベストアンサー
  • hidebun
  • ベストアンサー率50% (92/181)
回答No.1

TBitmapのインスタンスをもう1つ作成して、 そのCanvasに、StretchDrawで拡大・縮小したものを作成できそうです。 http://okwave.jp/qa/q991839.html

その他の回答 (1)

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2

失敬。Canvasへの描画にDrawではなく、StretchDrawにすれば良さそうですね。 Printer()->Canvas->Draw(x,y,pBitmap);

CLMN
質問者

お礼

ありがとうございました。 最初にコメントいただいたので良いようです。 RECT r; //RECTの四隅を指定する Printer()->Canvas->StretchDraw(r, pBitmap); これで何とか印刷できそうです。

関連するQ&A

  • 解像度と印刷サイズ

    問題の解答がわからないのですが 500dpiの解像度でスキャナーで取り込んだ画像を、250dpiの解像度の プリンターで印刷すると、印刷される画像の大きさはどうなるか? という問題なのですが、私は画像が荒くなるだけで 等倍で印刷されると思ったのですが、 あってますでしょうか?

  • 手持ちの画像が荒れずに印刷出来るか心配です。

    A6サイズの紙に、手持ちの画像を印刷したいと思っています。 印刷はオンラインの印刷会社に入稿する予定です。 画像データはjpgで、500 x 500pixel(72dpi)です。 指輪の画像なので、なるべく綺麗に印刷したいのですが 元の大きさがA6サイズに対して伸ばさなくても足りているのか心配です。 500 x 500pixel(72dpi)はミリ単位に直すと→176.39mm×176.39mm(72dpi)になると思うのですが A6サイズは105mm×148mmなので大きさは足りているので、画像を引き伸ばす必要は無いと思うのですが 考え方としてはあっていますか? オンラインの印刷会社(プリント○ック等)では画像解像度は350dpi(dpi=dots / inch)以上を推奨しているとあるので 解像度に関しては画像を一旦フォトショップで、解像度を72dpi→350dpiぐらいにあげれば問題ないのでしょうか? 印刷について初心者なため、よろしくお願い致します。

  • 画像解像度

    1200dpi*1200dpiのプリンターを使用して細密な写真を印刷いたいと思います 最適な画像解像度は 何dpi にしたらいいでしょう 一般的にプリンター解像度と画像解像度の関係はどれくらいが最適ですか

  • 画像大きさとプリンタのインク消費量・印刷時間の関係について

    過去の質問に「自分が所有するプリンタの解像度以上の解像度が画像にあるなら、わざわざ解像度を下げることなく、そのまま印刷すれば良い。インクの消費量や印刷時間は無駄にならない」というものがありました。 てっきり、解像度の高いファイル=インク消費大・時間がかかる」だと思っていた私には目から鱗のお話です。 昔、「解像度が高ければ、その分プリンタは同じ箇所を何度も上から印刷してしまうのでインクは多く減り、時間もかかる」という話を聞いたことがあるのですが、あくまでプリンタ側の「高画質・標準・高速」などといった設定だけの問題なのでしょうか? そこで、そのような話は本当なのか(1.2)、解像度=ファイルの重さと考えても差し支えないか(3)という点を質問させていただきます。 以下、それぞれのケースにつきまして、インク消費量と印刷時間にどのような違いがあるのか、お手数ですがご教授ください。 1) 200dpiに設定されたプリンタで、100dpiの画像と200dpiの画像を印刷する場合 2) 200dpiに設定されたプリンタで、200dpiの画像と350dpiの画像を印刷する場合 3) 1MBの画像と5MBの画像を印刷する場合(プリンタは同じ設定で) 宜しくお願い致します。

  • 拡大印刷について

    例えばページ設定「A4」で作成した書類(ワード等)をプリンタオプションでA2へ拡大印刷するのと、最初からページ設定で「A2」で作成し、そのままA2で印刷するのでは、どちらがきれいに出力できるものでしょうか?実験すればわかることなのですが、疑問に思ったので質問させていただきました。 それから、書類の中には画像(Lサイズ・解像度350dpi)ありという条件です。

  • ■解像度の低い画像(72dpi-180dpi)をカラー印刷したい

    ■解像度の低い画像(72dpi-180dpi)をカラー印刷したい お世話になります。 主にWeb用に撮影されたjpg画像を使って 紙用カタログを作ることになりました。 印刷屋さんには画像解像度は300dpiあることが好ましいと言われたのですが、 果たして72dpiの画像(ピクセル数も少ない)を敢えて300dpiに保存し直すことに意味はあるのでしょうか。 ネットで調べても、意味はない派と、photoshopが足りないピクセルを足してくれるのでやはり解像度は上げた方がよい派に意見が分かれているようです。 ピクセル数が十分にある画像なら解像度を上げる意味もある気はするのですが、 ピクセル数が足りない(例:本来300dpiで3x4cmの仕上がりにしたいのに、 72dpiで3x4cm分の大きさしかない、またはそれにすら満たない) 場合に意味があるのでしょうか。 それから、使うjpg画像はRGBになっているのですが、これもやはりIndesignに貼る前に Photoshop上でCMYKに変えた方がよいでしょうか。 作業環境は Mac OS10.6, CS4 印刷はオフセットではなく、デジタル印刷です。 ご意見お待ちしております。

  • 複数枚画像の合成

    こんにちわ、Visual Studio 2005のフォームアプリケーションでプログラミングしているものです。複数枚の画像を一つの画像にしたいのですが、どうもあっているのかどうかわかりません。 たとえば、画像が9枚あって1枚目の一番左上の画素を[0-0,0]とすると、 [0-0,0][1-0,0][2-0,0]|[3-1,0][4-1,0][5-1,0]|[6-2,0][7-2,0][8-2,0] [0-0,0][1-0,0][2-0,0]|[3-1,0][4-1,0][5-1,0]|[6-2,0][7-2,0][8-2,0] [3-0,0][4-0,0][5-0,0]|[6-1,0][7-1,0][8-1,0]|[0-2,0][1-2,0][2-2,0] [3-0,0][4-0,0][5-0,0]|[6-1,0][7-1,0][8-1,0]|[0-2,0][1-2,0][2-2,0] [6-0,0][7-0,0][8-0,0]|[0-1,0][1-1,0][2-1,0]|[3-2,0][4-2,0][5-2,0] [6-0,0][7-0,0][8-0,0]|[0-1,0][1-1,0][2-1,0]|[3-2,0][4-2,0][5-2,0] -----------------+-----------------+------------------------ [0-0,1][1-0,1][2-0,1]|[3-1,1][4-1,1][5-1,1]|[6-2,1][7-2,1][8-2,1] [0-0,1][1-0,1][2-0,1]|[3-1,1][4-1,1][5-1,1]|[6-2,1][7-2,1][8-2,1] [3-0,1][4-0,1][5-0,1]|[6-1,1][7-1,1][8-1,1]|[0-2,1][1-2,1][2-2,1] [3-0,1][4-0,1][5-0,1]|[6-1,1][7-1,1][8-1,1]|[0-2,1][1-2,1][2-2,1] [6-0,1][7-0,1][8-0,1]|[0-1,1][1-1,1][2-1,1]|[3-2,1][4-2,1][5-2,1] [6-0,1][7-0,1][8-0,1]|[0-1,1][1-1,1][2-1,1]|[3-2,1][4-2,1][5-2,1] -----------------+-----------------+------------------------ [0-0,2][1-0,2][2-0,2]|[3-1,2][4-1,2][5-1,2]|[6-2,2][7-2,2][8-2,2] [0-0,2][1-0,2][2-0,2]|[3-1,2][4-1,2][5-1,2]|[6-2,2][7-2,2][8-2,2] [3-0,2][4-0,2][5-0,2]|[6-1,2][7-1,2][8-1,2]|[0-2,2][1-2,2][2-2,2] [3-0,2][4-0,2][5-0,2]|[6-1,2][7-1,2][8-1,2]|[0-2,2][1-2,2][2-2,2] [6-0,2][7-0,2][8-0,2]|[0-1,2][1-1,2][2-1,2]|[3-2,2][4-2,2][5-2,2] [6-0,2][7-0,2][8-0,2]|[0-1,2][1-1,2][2-1,2]|[3-2,2][4-2,2][5-2,2] といった感じにしようと思っています。 画像には配列を使っていてbmp[0]~[8]が9枚の画像を表し、picはbmp[0]~[8]の画像一枚に対してサイズが横3倍縦6倍の画像になるはずです。 自分でプログラムしたのですが、できた画像を拡大しても細かすぎてよくわからない状況です。 for ( y = 0; y < h; y += 6 ) {  for ( x = 0; x < w; x += 3 ) {   for( b = 0; b < 3; b++ ) {    for( a = 0; a < 3; a++ ) {      pic->SetPixel( x + a, y + (2 * b) , bmp[((2 * b) * 3 + a + x) % 9]->GetPixel( x / 3, y / 6 ) );      pic->SetPixel( x + a, y + (2 * b) , bmp[(((2 * b) + 1) * 3 + a + x) % 9]->GetPixel( x / 3, y / 6 ) );    }   }  } } 以前に、同じような配置法なのですが横3倍縦3倍の合成画像として、 [0-0,0][1-0,0][2-0,0]|[3-1,0][4-1,0][5-1,0]|[6-2,0][7-2,0][8-2,0] [3-0,0][4-0,0][5-0,0]|[6-1,0][7-1,0][8-1,0]|[0-2,0][1-2,0][2-2,0] [6-0,0][7-0,0][8-0,0]|[0-1,0][1-1,0][2-1,0]|[3-2,0][4-2,0][5-2,0] -----------------+-----------------+------------------------ [0-0,1][1-0,1][2-0,1]|[3-1,1][4-1,1][5-1,1]|[6-2,1][7-2,1][8-2,1] [3-0,1][4-0,1][5-0,1]|[6-1,1][7-1,1][8-1,1]|[0-2,1][1-2,1][2-2,1] [6-0,1][7-0,1][8-0,1]|[0-1,1][1-1,1][2-1,1]|[3-2,1][4-2,1][5-2,1] -----------------+-----------------+------------------------ [0-0,2][1-0,2][2-0,2]|[3-1,2][4-1,2][5-1,2]|[6-2,2][7-2,2][8-2,2] [3-0,2][4-0,2][5-0,2]|[6-1,2][7-1,2][8-1,2]|[0-2,2][1-2,2][2-2,2] [6-0,2][7-0,2][8-0,2]|[0-1,2][1-1,2][2-1,2]|[3-2,2][4-2,2][5-2,2] の配置プログラムとして、 for ( y = 0; y < h; y += 3 ) {  for ( x = 0; x < w; x += 3 ) {   for( b = 0; b < 3; b++ ) {    for( a = 0; a < 3; a++ ) {      pic->SetPixel( x + a, y + b , bmp[(b * 3 + a + x) % 9]->GetPixel( x / 3, y / 3 ) );    }   }  } } との回答をいただいたので、これを参考に作ってみたのですが・・・。 説明が下手でわかりにくいかもしれませんが、お分かりの方がいましたらご教授お願いします。

  • HP上の画像を所定のサイズで印刷させたい

    自分で作成した画像をHP上にアップし、所定のサイズで印刷してもらうページを作成したいと考えています。 でもなぜかHP上では思ったサイズで印刷されません。 画像はphotoshopで作成しました。 (photoshop上では正常に印刷されました。) ・作成画像サイズ(psd) 283picxels x 283picxels = 10cmx10cm (72dpi) これをgif出力しHP上にアップ。 (gif画像サイズは上記のまま) IE上からその画像を印刷すると印刷サイズが小さくなってしまいます。 ・印刷出力画像サイズ 約7.5cmx7.5cm IEの設定は特に変更していません。プリンタも同様です。 photoshop上(PSD)では間違いなく72dpiになっています。photoshop上からWEB用として保存する際に解像度が変化してしまうのでしょうか? 画面解像度とは72dpiだと理解しているのですが96dpiなのでしょうか? だとすると印刷する環境によって印刷サイズが変化してしまう事になりますし…。 補足として関係ない情報かもしれませんが、僕のモニタは液晶(FlexScanS170)で推奨解像度である1280x1024で利用しています。ビデオボードはRADEON9500PROです。 よろしくお願いします。

  • 版下制作での画像拡大について

    A2サイズ(175dpi)の画像データ(ラスター)があります。 オフセット印刷に対して、このデータでそのまま版下を作成するか、高解像度(350dpi)に拡大して版下を作成するかを迷っています。 拡大する場合は、補完された結果に対してシャープネスやコントラストなどの調整ができるというメリットがありますが、生半可な知識で行うとかえって画像を汚くしてしまうおそれがあります。そこで、画像調整以外に高解像度にするメリットがあまりないのであれば、低解像度のまま版下をつくろうと考えています。実際のところ、そのメリットはどうなのでしょうか。 たとえば、画像無補正の場合、「そのまま低解像度」か「高解像度に画像補完」のどちらがよりよい結果を得られるのでしょうか。もしくはどちらが版下の作成方法として一般的なのでしょうか。 画像の内容や印刷方法によると言われればそれまでなのですが、みなさんの意見をいただければありがたいです。

  • 印刷用画像の解像度について

    初めまして。 タイトルについてですが、いくつか分からないことがありますので詳しい方、回答をお願いします。 印刷所に写真画像を使ってフルカラーで依頼をするのですが、その際の画像は解像度が300~350dpiが適しているということは色々調べてみて分かりました。フリー写真配布サイトでは大抵72か92dpiのものが殆どで、それはパソコンで見る上で適しているから印刷向けではないということも分かったのですが、72pdiのものを変換ソフト(フォトショがないのでGIMPというフリーソフトをダウンロードしました)で大きさを変えずに350dpiに解像度だけ変換してもやはり印刷には不向きなのでしょうか? 解像度に適したサイズにしてしまうと小さすぎて意味がないので(出来れば拡大したいくらいなので)、元々高解像度300~350pdiの素材ものを探すのが賢明でしょうか? あと元々350dpiの画像をある程度拡大したい場合、印刷には影響があるのでしょうか? なお別件になりますが、印刷に適した解像度のJPEGをTIFFに変換した場合印刷には問題ないかどうかもお教え頂けると助かります。 いくつも申し訳ありませんが、回答お願いします。

専門家に質問してみよう