[音楽再生] ROBボーデン:こんにちは、私はロブだけど、みましょう サイズの上でこれを試してみてください。 だから、我々は再びで始まるしようとしている それなのに基本的にコピーし、 いくつかの変更を行います。 すぐに我々は、変化を見る注意場所 代わりかどうかをチェックする ARGC 3等しく、我々は確認する必要はありません。 argcがあるので、4と等しくない場合 今、私たちはただ、INFILEに取っていない および出力ファイルが、我々はまた、取っている 我々はしている量であり、N、 原画像を縮小。 我々はそれの確信していると、我々はできるだけ atoi関数を使って整数にNに変換します。 だから、今我々はいくつかを作成しましょう 別名、単にARGV 2 INFILEを呼び出し、 ARGV 3の出力ファイル、ARGV 2および理由 ARGV 3は非常に有用名前ではありません。 今、私たちは確認するチェックしたいnは 我々が期待した範囲内のため、 スペックは以下の場合に指定します 、ゼロに等しい、または100より大きい その、無効なサイズ変更要因だが、 そして我々はそのことをユーザに警告する必要があります。 我々はすべてのことを超えていると、我々はできる 最終的に我々INFILEを開いて、我々は必要とする 誤りを確認して下さい 開口部は、何らかの理由で失敗しませんでした。 我々はまた、我々の出力ファイルを開く必要がありますし、 もう一度確認してくださいエラー 何らかの理由で失敗しませんでした。 しかし、必ず場合の開口部 出力ファイルは、我々は閉じる必要があることを失敗した すでに開かれたINFILE、。 だから、それから、それは失敗しなかったと仮定すると 判断に苦しみ - ちょうどのように、それなのに、 - ヘッダーに読むつもり INFILEから。 我々は確かにそれが有効だするつもりだ ビットマップが、今我々はいくつかをやろうとしている 少し違ったこと。 したがって、最初、私たちはするつもりだ 元の幅と高さを覚えている INFILEの、我々はするつもりだので、 出力ファイルのためにそれを変更すること。 だから今、奇妙な理由のためにそれを覚えている bi.biheight、否定的であり、 正、我々にあるので、実際の高さ、 絶対値を取りたい。 今、パディングは同じになるだろう それはそれなのににあったように、計算、 古い幅を使用して、そして今、我々はしている 実際に変更するつもり 私たちのヘッダーにあるんだ。 だから我々は弊社の幅を乗算するつもりだ N、我々は、幅を縮小しているので N、我々はしているので、nで高さを掛ける Nによるスケーリング、そして今、我々は持っている 新しいパディングのための計算 新しい幅に基づく。 だから今我々はいくつかの変更が必要に 私たちのヘッダ内の他のフィールド。 Bi.biSizeImageをすることになっている ピクセル単位でのすべてのバイトのサイズ 画像のパディング。 だから私たちの一つの行のサイズ 画像は、RGBトリプルサイズの大きさです 単一ピクセルの、倍の数の 行の画素に加え、パディング 行の終わり。 そして、我々によってそれを乗算するつもりだ 得るために私達の高さの絶対値 バイトの合計数 画像データである。 bf.bfSizeは単なる合計数です ので、私たちの画像データ、のバイト bi.biSizeImage、プラス 私たちのヘッダーのサイズ。 そのように、ビットマップファイルのサイズに加算 ヘッダ、およびビットマップ情報のサイズ [OK]を、ヘッダ。 だから、我々がする必要があるすべてです 私たちのヘッダーに変更します。 今、私たちは、ビットマップファイルのヘッダーを記述します 私たちの出力ファイル、および当社のビットマップ情報へ 現在、私たちの出力ファイルにヘッダと、 我々は行くを開始する準備が整いました 実際のピクセル以上。 だから我々は反復処理したい INFILEの走査線。 だから我々はoldheight反復処理します。 私たちは覚えているために必要なのはこのためです 我々はそれを変更する前に元の高さ、 そしてnで、それを拡大縮小。 今、私たちは、単一の読み取りを行っている へINFILEの列 サイズoldwidthのバッファ。 だからここでは、RGBのサイズをfreadingいる トリプル、1ピクセルと古い幅 私たちのバッファにINFILEからそれら。 そして、それは全体のことになるだろう この配列内の行。 だから今、私たちはにn回の繰り返し処理をしたい 私たちの出力ファイルをn回にこの行を印刷します。 となるように、このループが何をしているかだ。 この内側のループは、繰り返し処理をされている アレイ上に印刷、それ自体を行 配列n回の各ピクセル。 そのようにゼロ番目の要素が印刷されている n回、最初の要素が中である n回印刷した。 そして、それは我々がしようとしているかのようなものだ 水平出力ファイルに拡張し、 このループは、n個のループしているので 時間は、私たちがしようとしている方法です 垂直スケール。 ダウンここで、我々は我々が追加する必要があることがわかります 各行の最後にパディング。 これがループの内側にある理由です それはちょうどのn行をプリントアウトだ INFILEからこの1行。 そして、ここまで、私はスキップするつもりだ 一回以来INFILEパディング、 私たちは一列で行われている INFILE、我々は気にしない どのようなパディングがあった。 我々は、ちょうど第二行に取得したい。 そして、我々は、ループバックだろうと、すべてやる 再びこの2行目。 最後に、一度私たちはすべてのことを行っている、 我々は近い、INFILEを閉じることができます 出力ファイル、およびリターン 0私たちが行っているため。 私の名前はロブであり、これは、サイズ変更した。 [音楽再生]