- ベストアンサー
画像の拡大・縮小
読み込んだ画像を1.5倍に拡大、2/3倍に縮小したいのですが、C言語でそのようなことは可能なのですか?また、できるとしたら、どのように行えばいいのでしょうか?教えてくださいm(_ _)m
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
座標系だけでしたら処理は単純です。 単に倍率をかけてあげればよいだけです。 具体的な計算式は、 (1.5倍の例) Image( x*1.5, y*1.5 ) = Image( x, y ) ということです。 これだけでは多分わからないですね^_^; 以下にプログラムを書きます。 ---------------------------------------------------------------- void main() { unsinged char Image[ 16 ][ 16 ]; // 読み込んだ画像の格納場所 unsinged char Image2[ 24 ][ 24 ]; // 拡大した画像の格納場所 double zoom = 1.5; int x, y; int i, j; /* 画像の読み込み処理 */ for(x=0; x<16; x++) { for(y=0; y<16; y++) { // 拡大した時に隙間が空くので、その箇所を補完する for(i=0; (double)i<zoom; i++) { for(j=0; (double)j<zoom; j++) { Image2[ (int)(x*zoom)+i ][ (int)(y*zoom)+j ] = Image[ x ][ y ]; } } } } } ---------------------------------------------------------------- これでImage2に1.5倍した画像が格納されるはずです。 (注:Image2の配列のサイズは任意に決めています) 理解できたでしょうか。 画像の拡大縮小に関しては、まだ多くの手法が存在しますので、 調べてみると面白いかもしれませんよ(^_^)
その他の回答 (2)
- skyrandom
- ベストアンサー率0% (0/15)
>できるとしたら、どのように行えばいいのでしょうか? 言語であればC/C++/C#、画像であればbmp/gif/jpgなどで手段はいろいろ違ってくると思います。
- BlueStones
- ベストアンサー率65% (13/20)
可能です。 方法としては、 座標系だけ拡大縮小する方法(単純計算) 色を補完して拡大縮小する方法 など多くの方法がありますが、 どの方法をご希望でしょうか? また実際に、どのようにプログラムを書いているかも添えてくださると、 より詳しい回答を書くことができまよ^_^;
補足
ご回答ありがとうございます!!座標系だけ拡大縮小する方法を教えてもらいたいのですが・・・