JPEG等の画像の90度回転 – プログラミング – Home

通知
すべてクリア

[解決済] JPEG等の画像の90度回転


Ti Amo
 Ti Amo
(@Ti Amo)
ゲスト
結合: 16年前
投稿: 23
Topic starter  

質問「JPEG画像の表示と印刷」では大変お世話になりました。

今度は、JPEG, GIF等の画像を90度回転させる方法について教えて戴きたいのです。

ネット上を探したら、一つ見つかりました。
http://homepage1.nifty.com/MADIA/vc/vc_bbs/200603/200603_06030044.html
これは、
1.CImageによる手法となっていますが、CImageだと透明GIFが透明にならなかったり
  するので、IPicture で出来ないものかと思っています。
2.回転した後ファイルに書き出すようになっていますが、自分の場合、
  回転したものを表示・印刷したいです。

CImage::GetBits みたいな関数は IPicture にはないようなので、どうしたらいいか
皆目見当がつきません。

どなたかご教授お願いいたします。


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

IPictureは基本的に読み込みと描画程度の機能しかなく画像編集には不向きです。
32BitのDIBにうまく変換できれば透過情報も扱えますが
そもそもIPictureから透過情報を残したまま32BitDIBに変換できるかどうかは知りません。

今回の場合は単純な回転描画のみなので、デバイスコンテキストに
SetWorldTransformで変換方法を適切に設定してやれば
一応回転した透過GIFの描画は可能です。


返信引用
Ti Amo
 Ti Amo
(@Ti Amo)
ゲスト
結合: 16年前
投稿: 23
Topic starter  

subaruさん、応答有り難うございます。

ここのサンプルの中にビットマップに変換するコードがありましたので、
これを使ってPlgBltで表示することにしました。
http://www.vcppclub.com/samples/graph/p_pict/pict.html
(get_Handle, CopyImage, Attach 使用)

透明GIFの透過情報が残っているかどうか判らないし、PlgBltのマスクの仕方も
判らないので、透明GIFはあきらめます。
CImageを使わないので、GDIPLUS.DLLの再頒布なんて厄介なことをしなくていいです。

教えて戴いたSetWorldTransformはよさそうですが、自分には難解なので、
将来の課題にします。
ありがとうございました。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

> CImageを使わないので、GDIPLUS.DLLの再頒布なんて厄介なことをしなくていいです。

参考までにですが、WindowsXP以降に限定するならGDIPLUS.DLLの再頒布は不要です。


返信引用
Ti Amo
 Ti Amo
(@Ti Amo)
ゲスト
結合: 16年前
投稿: 23
Topic starter  

bunさん、有り難うございます。
98SEでテストしたとき要求メッセージが出たもんですから。
98のユーザーさんもまだいらっしゃる感じなので、OSの対象としています。


返信引用
ISLe
 ISLe
(@ISLe)
ゲスト
結合: 18年前
投稿: 38
 

> 98のユーザーさんもまだいらっしゃる感じなので、OSの対象としています。

MSDNでPlgBltのページを見ると

> Windows NT/2000/XP/Vista: Included in Windows NT 3.1 and later.
> Windows 95/98/Me: Unsupported.

って書いてありますけど。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました