ID非公開

2021/5/12 15:24

33回答

画像を扱う場合、CとJAVAではどちらがおすすめでしょうか?

Java | C言語関連38閲覧

ベストアンサー

0

Android端末ならAndroid Java、特典としてAndroid端末を持っていれば自分の作ったアプリを人に見せびらかせられる(モチベーションが上がるんじゃないでしょうか、笑)。 ただし、友達のAndroid端末にインストールすることを想定した場合は、ターゲットOSのバージョンを最低にすれば良いですが、機種によって解像度が違うので特定の解像度に依存しないプログラミングが必要になります。 下記は当方が作ったテトリスのキャプチャ動画です。 https://youtu.be/Mf49zmHEaI0

その他の回答(2件)

0

私はCを薦めますね。 Javaはその仕様上、画像データをRAWデータとして完全オンメモリで扱う必要があるためです。 100KBのjpeg画像であっても、内部ではraw展開されて数十MBのメモリを消費するということがありえる、ということになりますが、Javaはメモリ管理をユーザー側でできないため、開いてみるまでどのくらいメモリを消費するかわかりません。 小さな画像をちまちま弄るならJavaで十分ですが、最近の高画質、高解像度データを扱おうとすると、使用されるメモリが見積もれない、というのは結構大変だったりします。 Javaで画像処理をまともにやっている技術者ならOutOfMemory食らった経験が一度はあるでしょう。 ※大抵はXmxオプションの指定が甘いせいだったりしますが。 Cの場合はライブラリにもよりますが、メモリが少ない頃からの歴史の積み重ねにより、逐次読み込みやブロック読み込みなど、省エネで高速展開できる仕組みが豊富です。 実行速度に関しては、メモリを気にしないなら現在のJavaとCでは大した差はありません。 若干Cのほうが速い、程度です。

0

圧倒的に Java です。 学習コストが段違いになります。 画像を内部的に扱うためのライブラリも揃っているし、表示することも任意の形式に変換して出力することも容易です。 一方Cは、標準で画像を扱えないため、画像を扱うライブラリを自分で導入するか、自分でライブラリを作るところから始まります。 そうして内部的に画像を扱えたとしても、今度は画像を表示するためにも各環境でGUIを作るためのライブラリを探したり、使ったりしなければならず、非常に学習コストが高いと思います。 処理速度の面でもどっちが速いとかいうのは、なんとも言えません。 --- 画像を "扱う" というのが単に表示させたり、拡大縮小、グレースケールなど、単純な操作だけなら上で述べた通りですが、もっと複雑な操作を考えているのであれば、この限りではありません。