質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

1回答

1553閲覧

【C】画像サイズを動的メモリに持ちたい。

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

0クリップ

投稿2016/08/23 10:31

編集2016/08/23 10:37

画像サイズを動的メモリに確保して、それをソースで使いたいと思っています。

これまで#define で画像の縦と横を定義していました。

C

1 #define height 400 2 #define width 400 3 4char screen[height][width][3]

今回、画像を読み込んでから縦と横のサイズを取り、ソースに通そうと思っています。

関数malloc()の使い方をHP等で調べましたが、いまいち使い方を掴めませんでしたので
どなたか教えていただけませんか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

単純には1次元として確保し、オフセットを計算して画素(ピクセル)にアクセスします。

C

1int width = 400; 2int height = 400; 3char *image = malloc(width * height * 3); 4 5for (int y = 0; y < height; y++) { 6 for (int x = 0; x < width; x++) { 7 int offset = (y * width + x) * 3; 8 image[offset + 0] = /*...*/; 9 image[offset + 1] = /*...*/; 10 image[offset + 2] = /*...*/; 11 } 12} 13 14free(image);

投稿2016/08/23 11:03

yohhoy

総合スコア6191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/23 13:04

回答有難うございます。すみません、読み込むまで画像のサイズが分からないというのを想定していましたので、intで宣言しない方法でできますか?
yohhoy

2016/08/23 13:43

通常、画像ファイル自身にはヘッダ領域等に画像サイズ情報が格納されています。そもそも、どのような画像ファイルを読み込もうとされているのでしょうか?
退会済みユーザー

退会済みユーザー

2016/08/24 12:21

ビットマップ画像です。すみません、書き忘れてました。
yohhoy

2016/08/24 13:28

> intで宣言しない方法でできますか? widthとheightを宣言と同時に初期化していることを指していますか?これは回答用のサンプルコードに過ぎません。 先頭では初期値無しで変数宣言だけしておいて、後から代入(fread等でビットマップファイルから読み込む)しても望むとおり動作しますよ。
PineMatsu

2016/08/29 08:30

int型(32bit)で足らない画像サイズって通常有り得ないのでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問