• ベストアンサー

画像の拡大・縮小

読み込んだ画像を1.5倍に拡大、2/3倍に縮小したいのですが、C言語でそのようなことは可能なのですか?また、できるとしたら、どのように行えばいいのでしょうか?教えてくださいm(_ _)m

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

  • ベストアンサー
回答No.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)

回答No.2

>できるとしたら、どのように行えばいいのでしょうか? 言語であればC/C++/C#、画像であればbmp/gif/jpgなどで手段はいろいろ違ってくると思います。

回答No.1

可能です。 方法としては、 座標系だけ拡大縮小する方法(単純計算) 色を補完して拡大縮小する方法 など多くの方法がありますが、 どの方法をご希望でしょうか? また実際に、どのようにプログラムを書いているかも添えてくださると、 より詳しい回答を書くことができまよ^_^;

unaginobori
質問者

補足

ご回答ありがとうございます!!座標系だけ拡大縮小する方法を教えてもらいたいのですが・・・