• 締切済み

PlgBltで画像の回転

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

  • 0333
  • お礼率73% (76/104)

みんなの回答

  • mixmarion
  • ベストアンサー率100% (2/2)
回答No.1

単なる想像なんですが・・・ デバイス依存な可能性は考えられないでしょうか。 つまり、ちゃんとしたデバイスドライバなら頑張って回転してくれるけど、そうでもない場合大きすぎる画像でバグってしまう、とか。 この現象とは違いますが、何度かGDIでドライバのバグを経験したことがありますので、参考までに。

0333
質問者

お礼

回答ありがとうございます。 では、別のPCで早速試してみます。

関連するQ&A

  • 画像の編集

    画像のサイズ(KB、ピクセル)を変えたり、JPEGをビットマップに変えたり、他にも明るさや色調など、いろいろ画像を編集できるようなフリーソフトを教えて下さい。

  • Androidアプリ開発 画像の回転について

    CANVASに画像を表示し、その画像を回転させるようにしたいのですが、どうにもうまくいかなくて困っています。 画像の中心を軸に回転させたいと思って以下のように実装してみたのですが、うまくいきません。 //////////////////////////////以下抜粋//////////////////////////////// Matrix matrix; // Bitmap のサイズの取得 int width = bmp.getWidth(); int height = bmp.getHeight(); matrix = new Matrix(); // 画像の中心を軸に回転させるようにする(ここがうまくいっていないっぽい・・・) matrix.postRotate(5.0f, width / 2.0f, height / 2.0f); // 回転させた画像を生成する bmp2 = Bitmap.createBitmap(bmp, 0, 0, width, height, matrix, true); // CANVASに画像を描画する canvas.drawBitmap(bmp2 , 10.0f, 10.0f, paint); ////////////////////////////////////////////////////////////////////// 上記のコードで画像自体は回転するのですが、中心軸がずれてしまっているようです。 画像のサイズは横15ピクセル、縦15ピクセルとなっております。 また、matrix.postRotateの前でmatrix.postTranslate()にて軸を設定してみたのですが、 これもうまくいきませんでした。 きれいに画像を回転させるにはどのようにすればよいか、わかる方いましたら教えて いただけないでしょうか?

    • ベストアンサー
    • Java
  • 画像のサイズ

    デジカメ初心者なので教えてください。 撮った画像を投稿したいのですが、「画像サイズは縦横250ピクセルが上限で 20キロバイト以下です。」というエラー表示になってしまいます。 マイクロソフトPhotoEditorでサイズ変更してデスクトップに保存しました。プロパティで見る限りサイズ【10.6kバイト 245x183ピクセル】で条件を満たしていると思うのですが…。 よろしくおねがいします。

  • JPEG圧縮の仕組み

    コンピュータグラフィックスにおける画像の形式で特に多く使われるもので ビットマップとJPEGがありますよね。 ビットマップは1ピクセルを3色に分け、各色1バイトで表していますよね。 それに対して JPEGはビットマップに比べ 同じピクセル数の画像でもサイズが 1/10~1/20くらいまで縮小されますが、どういう原理で圧縮しているのでしょうか?

  • 画像回転について

    いつもお世話になります。 下記ソースにてビットマップの回転を実現させようとしております。 ソースの一部ですので処理概要を説明すると、 まず、編集用画像領域をimage[][]に格納しておいて、 バッファでデータのやり取りをしており、下記ソースで演算後、 BitBltしております。 そこで、三角関数の処理に公式を利用しているのですが、 どうも左回転してしまいます。右回転したいので 安直に下記RotX・RotYを入れ替えたら右回転したんですけど、 実際の表示位置とは反転してしまいます。 数学的な話だと思うのですが、正常に右回転する方法を ご存知の方、ご教授よろしくお願い致します。 開発環境はVC++6.0MFCです。 for (y = 0 ; y<Height ; y++) { //オリジナル針のY方向  for (x=0 ; x<Width ; x++) { //オリジナル針のX方向   double IncreX=x-2.5;  //針中心からのベクトル   double IncreY=y-31.5; //針中心からのベクトル   double RotX= IncreX*::cos(m_dSAngle)-IncreY*::sin(m_dSAngle);   double RotY= IncreX*::sin(m_dSAngle)+IncreY*::cos(m_dSAngle);   long Offset = long(50.0+RotY) * 100 + long(50.0+RotX);   ASSERT(Offset<100*100);   *(buf+Offset)=image[y][x];  } }

  • 画像の大きさと2次元配列

    C++で ビットマップの一つ一つのピクセルの色を取得したいんですが、 画像を読み込んでHBITMAPにしてBITMAPにして、 COLORREF color[bitmap.bmWidth][bitmap.bmHeight]; と宣言するとエラーになってしまいます。 具体的には 『定数式が必要です。』や『サイズが 0 の配列を割り当てまたは宣言しようとしました。』です。

  • スキャンした画像の編集

    スキャンした画像の縦と横サイズを合わせたいので簡単にサイズ調整できる編集ソフトってないでしょうか?XPの最初から入っているペイントで編集してみた所端から何ピクセル削るみたいな感じでやりにくいです。それと画像の回転って90度単位でしかできないんでしょうか?よろしくおねがいします。

  • フォトショップエレメント7 画像を縮小すると画質が粗くなります・・・

    フォトショップエレメンツ7を使用しています。 仕事で先週からHP担当になったのですが、素人同然で苦戦しています。 皆様の知恵をお貸し下さい。 加工した画像を100x100(ピクセル)の5kbのサイズに縮小したいのですが どうやっても画質が粗くなってしまうんです。 試したやり方は、 (1)フォトショップのイメージ→サイズ変更→画像解像度→ピクセル数を100x100にする→縮小専用で5kbにする (2)フォトショップではサイズはそのまま→縮小専用で100x100 5kbにする いずれも、リサイズ後の画像を拡大(400%)してみると粗くなっています。 もちろん、劣化はあって当然なのですが他店(ネットショッピング)で同じサイズの画像をみると拡大してもそこそこきれいです。 実際、登録してあるネットショッピングの管理者より「画像が粗すぎる」ということで何回もやり直しになっています。 ファイル形式はjpgです。 いいやり方はないでしょうか? 皆様の知恵をお貸し下さい。

  • デジタルカメラの画像のサイズ変更について教えて下さい!

    こんにちは。デジタルカメラで撮影した画像の大きさを変更するには、どの様にしましたら良いのでしょうか?ファイルのサイズを70dpi、9x12cm、340x255pixel に変更したいのですが、方法が分かりません。。。お詳しい方がいらっしゃいましたら、御教え下さいませ!宜しくお願い致します。

  • jpg画像の切り取り、縮小の方法

    HP作成にあたり、人物の顔写真を貼りたいんですが、その元jpg画像の大きさが100x100とします。そのサイズを縮小し、顔の部分を切り取るということはわかるのですが、どうにもやり方がわかりません。 HPに貼付ける範囲(ピクセル数)は決まっているのですが、どの手順でやるのが画像がつぶれることなくスムーズにできるのでしょうか? 初心者ですので、簡単なことだと思うのですが悩んでいます。 手元にあるソフトは、作成はDreamweaver、画像ソフト系はPhotoshop,Fireworksがあります。 やり方を詳しく教えていただけるとうれしいです。 よろしくお願いします。

専門家に質問してみよう