1 00:00:00,000 --> 00:00:10,210 >> [音楽再生] 2 00:00:10,210 --> 00:00:13,320 >> ZAMYLA CHAN:レッツ·ブロー リサイズしたものまで。 3 00:00:13,320 --> 00:00:17,710 サイズ変更では、ユーザーが経由で渡します コマンドライン、ビットマップ画像 4 00:00:17,710 --> 00:00:21,860 彼らはあなたが番号でスケールする 彼らはまた、渡すこと 5 00:00:21,860 --> 00:00:23,770 コマンドラインで。 6 00:00:23,770 --> 00:00:24,690 我々はこれをどのように行うのですか? 7 00:00:24,690 --> 00:00:28,270 >> さて、最初のものは、まず、みましょう ステップにこれを打破する。 8 00:00:28,270 --> 00:00:31,510 あなたはINFILEを開きたいとしている 彼らはあなたを与えることだけでなく、 9 00:00:31,510 --> 00:00:35,560 作成し、出力ファイルを開くこと あなたが置くつもりだ 10 00:00:35,560 --> 00:00:38,020 インチサイズ変更画像 11 00:00:38,020 --> 00:00:42,050 その後、あなたは、サイズ変更しているので、と それはビットマップなので、それヘッダなので、 12 00:00:42,050 --> 00:00:46,080 また、ヘッダを更新するつもりだ 出力ファイルのための情報、 13 00:00:46,080 --> 00:00:47,950 そしてそれをインチ送る 14 00:00:47,950 --> 00:00:51,850 その後、に読み込まするつもりだ INFILEの走査線、 15 00:00:51,850 --> 00:00:56,890 ピクセル毎、水平リサイズ とにそれらのピクセルを書き込む 16 00:00:56,890 --> 00:01:00,910 指定された出力ファイル、 ユーザーの規模別。 17 00:01:00,910 --> 00:01:03,940 >> あなたがすることを忘れないつもりだ 必要に応じてパディングを追加します。 18 00:01:03,940 --> 00:01:05,400 後でその上でより多くの。 19 00:01:05,400 --> 00:01:07,790 そして、また、縦方向にサイズ変更する​​。 20 00:01:07,790 --> 00:01:08,890 [OK]をクリックします。 21 00:01:08,890 --> 00:01:13,280 だから、これは少しあることを行っている それを行って、誰よりも複雑であるが、 22 00:01:13,280 --> 00:01:18,310 何が似ていると、そのそれなのに意志であり、 再び、非常に有用であることが分かる。 23 00:01:18,310 --> 00:01:23,160 それなのにがファイルを開くことを忘れないでください、 のヘッダー情報を更新する 24 00:01:23,160 --> 00:01:28,250 出力ファイルは、スキャンラインに読み込み、 ピクセル毎、画素毎に書き込む 25 00:01:28,250 --> 00:01:30,510 出力ファイルのスキャンラインへ。 26 00:01:30,510 --> 00:01:37,040 >> だからもう一度、あなたの最初のステップは、おそらくかもしれない CP、それなのに、すかになる 27 00:01:37,040 --> 00:01:40,560 あなたPSET5ディレクトリに。 28 00:01:40,560 --> 00:01:43,920 しかし覚えておいて、あなたがそれをコピーする前に、 あなたが理解していることを確認し 29 00:01:43,920 --> 00:01:46,600 非常に徹底的それなのに。 30 00:01:46,600 --> 00:01:47,620 [OK]をクリックします。 31 00:01:47,620 --> 00:01:49,880 >> それでは、ファイルを開いてみましょう。 32 00:01:49,880 --> 00:01:50,870 あなたはそれを行う方法を知っている。 33 00:01:50,870 --> 00:01:52,600 私はあなたにそれを残すつもりです。 34 00:01:52,600 --> 00:01:56,050 次に、ヘッダ情報を更新する 出力ファイルのため。 35 00:01:56,050 --> 00:01:59,240 我々は、新しいビットマップを有するので、 私たちは、新しいヘッダ情報を持っている。 36 00:01:59,240 --> 00:02:00,970 ここで何が変化するのか? 37 00:02:00,970 --> 00:02:06,000 さて、ファイルサイズは変更する予定です 我々はより多くを持っているつもりですので、 38 00:02:06,000 --> 00:02:07,900 以前よりもピクセル。 39 00:02:07,900 --> 00:02:11,060 画像サイズはまた、このように、ある である限り、変更するつもり 40 00:02:11,060 --> 00:02:13,050 幅と高さ。 41 00:02:13,050 --> 00:02:17,180 >> では、どの変数が正確にものがありますか? 42 00:02:17,180 --> 00:02:20,960 さて、あなたはヘッダに見れば 情報、あなたがそこにある参照してください。 43 00:02:20,960 --> 00:02:25,640 合計を表しbiSizeImage、 バイト単位で画像の大きさ、 44 00:02:25,640 --> 00:02:28,340 ピクセルとパディングを含む。 45 00:02:28,340 --> 00:02:32,520 biWidthは画像の幅である ピクセル単位で、マイナスパディング。 46 00:02:32,520 --> 00:02:35,580 のbiHeightはの高さ ピクセル単位での画像。 47 00:02:35,580 --> 00:02:39,200 そしてそうそれらはに含まれています 構造体BITMAPFILEHEADERと 48 00:02:39,200 --> 00:02:40,390 BITMAPINFOHEADER。 49 00:02:40,390 --> 00:02:45,300 あなたはそれによってある1伝えることができます bmp.hしようと見て 50 00:02:45,300 --> 00:02:49,670 BITMAPINFOHEADER構造体と見て 変数がそこにリストされている。 51 00:02:49,670 --> 00:02:54,700 >> そうoutfilesヘッダーを更新する 情報、あなたはするつもりだ 52 00:02:54,700 --> 00:02:57,025 のこれらの値を変更する 高さと幅。 53 00:02:57,025 --> 00:03:00,570 しかし、チャンスは、あなたは、いくつかが必要になる場合があります INFILEのヘッダ情報の 54 00:03:00,570 --> 00:03:03,670 後で、その最高の両方を追跡するために。 55 00:03:03,670 --> 00:03:07,770 しかし、あなたの変数に非常に明確であること 名前を誤っないように 56 00:03:07,770 --> 00:03:12,490 に不正な値を書き込む 出力ファイルのヘッダー。 57 00:03:12,490 --> 00:03:16,160 >> だから今のはへの読み込みを取得させ 走査線ピクセル毎。 58 00:03:16,160 --> 00:03:20,210 繰り返しますが、私たちは信頼できるに頼るつもりだ I / Oライブラリを提出し、見 59 00:03:20,210 --> 00:03:22,100 関数fread。 60 00:03:22,100 --> 00:03:26,150 freadは、構造体へのポインタを取り込み つまり、そのバイトが含まれています 61 00:03:26,150 --> 00:03:30,130 あなたが読んでいる中で、それぞれのサイズ あなたが読んでいる要素 - 62 00:03:30,130 --> 00:03:34,410 再び、はsizeofは便利になるだろう ここで関数の数 63 00:03:34,410 --> 00:03:38,820 あなたがしていることをサイズ、大きさの要素、 そして最後にある読み取り、および、 64 00:03:38,820 --> 00:03:41,310 inpointer、ファイル あなたはから読んでいる。 65 00:03:41,310 --> 00:03:46,770 だから、数要素を取っている inpointerからサイズ、およびの 66 00:03:46,770 --> 00:03:49,040 データにそれらを置く。 67 00:03:49,040 --> 00:03:51,695 >> 今では水平方向にサイズ変更する​​時が来た。 68 00:03:51,695 --> 00:03:56,880 nは、各画素について、次いで、2に等しい場合 INFILE、我々はそれを書くことになるだろう 69 00:03:56,880 --> 00:04:00,870 二度出力ファイル内。 70 00:04:00,870 --> 00:04:02,210 どのようにしてファイルを書き込むのですか? 71 00:04:02,210 --> 00:04:06,400 まあ、我々はfwriteの機能を持っているので、 我々は、構造体へのポインタを撮影した 72 00:04:06,400 --> 00:04:10,170 それはあなたがしているバイトが含まれています からの書き込み、その後、我々は渡す 73 00:04:10,170 --> 00:04:14,430 サイズ、数、出力、どこ あなたはそれを書くことになるだろう。 74 00:04:14,430 --> 00:04:19,200 して、プロセスを繰り返す、となります forループができ、単純な反復。 75 00:04:19,200 --> 00:04:21,740 >> しかし、我々は覚えておく必要があります インチパディングを追加する 76 00:04:21,740 --> 00:04:26,040 パディングの概念は良く、ということで、 各ピクセルは3刺されていますが、 77 00:04:26,040 --> 00:04:28,940 各スキャンラインの必須のサイズ 4バイトの倍数である。 78 00:04:28,940 --> 00:04:33,660 それ故、ピクセル数ではない場合 4の倍数で、我々はいくつかを追加する必要があります 79 00:04:33,660 --> 00:04:36,630 ちょうどゼロでパディング。 80 00:04:36,630 --> 00:04:42,130 今、誰とは違ってそれを行って、とは異なり、 コピーし、INFILEイメージと 81 00:04:42,130 --> 00:04:44,370 出力ファイルのファイルは、別の持ってきた 異なるパディング彼らはだから 82 00:04:44,370 --> 00:04:46,360 異なる幅。 83 00:04:46,360 --> 00:04:46,690 >> [OK]をクリックします。 84 00:04:46,690 --> 00:04:51,050 ので、おそらく式だろう ここに便利になる。 85 00:04:51,050 --> 00:04:55,120 私は、それを見つけるためにあなたにそれを残しておきますが、 パディングを書くために、ことを教えてくれ、 86 00:04:55,120 --> 00:04:59,360 まあ、それは単純なのfputc関数の、 文字を渡す 87 00:04:59,360 --> 00:05:02,200 あなたが書きたいことをしてから、 ファイルポインタがあること 88 00:05:02,200 --> 00:05:04,280 に書き込む。 89 00:05:04,280 --> 00:05:08,670 だから今我々は、水平方向のサイズを変更したので、 そして、パディングを使用 90 00:05:08,670 --> 00:05:12,030 あなたのファイルを移動する必要があることを覚えておいてください あなたのための位置指示、 91 00:05:12,030 --> 00:05:14,480 パディングにFREADすることはできません。 92 00:05:14,480 --> 00:05:18,230 だからていることを確認したいファイル INFILEでの位置表示器 93 00:05:18,230 --> 00:05:19,980 正しい点にある。 94 00:05:19,980 --> 00:05:23,970 我々はまたしたいので、 垂直方向にサイズ変更します。 95 00:05:23,970 --> 00:05:27,090 私達はちょうど、水平方向に伸ばすことができない すべての行を必要とするため、 96 00:05:27,090 --> 00:05:30,370 n回コピーする。 97 00:05:30,370 --> 00:05:33,050 >> 今、いくつかの異なるがあります これを実行する方法。 98 00:05:33,050 --> 00:05:39,010 だから1、私達はでは、書き換え方法を使用することができます 我々は、全ての画素を覚えている 99 00:05:39,010 --> 00:05:42,840 配列内の指定された行の、および その後、我々はとしてその配列を書く 100 00:05:42,840 --> 00:05:44,730 何度も必要に応じて実行します。 101 00:05:44,730 --> 00:05:49,530 またはどこに再コピー方法があります、 INFILEに一列に読み取った後 102 00:05:49,530 --> 00:05:53,530 して、出力ファイルにそれを書いて、 パディングを追加し、我々はfseek関数 103 00:05:53,530 --> 00:05:57,250 元の行の先頭に、 して、水平を繰り返す 104 00:05:57,250 --> 00:05:58,710 そこからサイズ変更。 105 00:05:58,710 --> 00:06:02,280 方法に関係なく、しかし、あなたはよ 全ての画素が繰り返されるようにする 106 00:06:02,280 --> 00:06:06,370 n回、すべての行がなければ 同様にn回繰り返した。 107 00:06:06,370 --> 00:06:09,160 >> それを使用すると、ビットマップがあるでしょう 命よりも大きい。 108 00:06:09,160 --> 00:06:11,760 私の名前はZamylaであり、これはCS50である。 109 00:06:11,760 --> 00:06:19,542