10/01/03 15:27:15
hello,worldの次に何作れば良いですか?
ステップアップ式にお題出してるサイトとか無い?
972:デフォルトの名無しさん
10/01/03 15:37:45
1.とりあえず一冊買う
2.とほほのjava
3.javaの道
973:デフォルトの名無しさん
10/01/03 16:03:02
画像について質問です。
巨大なBufferedImageに図形などを描画してそれをImageIOでファイルに書き出したいんですが
画像サイズがデスクトップサイズを超え始めたぐらいからOutOfMemoryが出て生成に失敗してしまいます。
大きい画像を使いたい場合何か方法はありますか?
jdkは1.6です。
//そういえばImageIOでjpgを保存すると色にセピアみたいになる変換掛かりますよね?どうすれば治るんでしょうか・・・
974:デフォルトの名無しさん
10/01/03 16:14:43
>>973
VM引数に -Xmx512m とかつけて最大ヒープサイズを大きく取るとか。
975:デフォルトの名無しさん
10/01/03 16:36:56
デスクトップサイズって巨大かなぁ?
1920x1200x3[byte]として6,912,000[byte]。7MB弱だし。
どっかメモリリークしてないか?
976:デフォルトの名無しさん
10/01/03 17:01:27
public static void main(String[] args) throws Exception {
BufferedImage im = new BufferedImage(1920*2,1200*2,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = im.createGraphics();
for (int x=0; x<im.getWidth(); x+=10) {
for (int y=0; y<im.getHeight(); y+=10) {
Color c = new Color((int)(Math.random()*256)
,(int)(Math.random()*256)
,(int)(Math.random()*256));
g.setColor(c);
g.drawLine(0, 0, x, y);
}
}
g.dispose();
OutputStream out = new FileOutputStream("test.jpg");
ImageOutputStream ios =
ImageIO.createImageOutputStream(out);
ImageWriter iw = (ImageWriter)ImageIO
.getImageWritersByFormatName("jpeg").next();
iw.setOutput(ios);
iw.write(im);
out.close();
}
これとか問題出る?
977:デフォルトの名無しさん
10/01/03 17:20:08
>>976
大丈夫でした!
どうやら、画像以外にもいろいろやってるからそれらがメモリを圧迫しているようです。
ちなみに出力部分のところはImageIO.write(im,"jpeg","test.jpeg");と何か違うんでしょうか?
978:デフォルトの名無しさん
10/01/03 20:17:28
>>977
ImageIO.java見ると分かるけど、実はほぼ同じ。
ImageIO.getImageWritersByFormatName("jpeg") がサービスプロバイダの
イテレータなので複数の実装があったときに使い分けられる程度。
979: ◆QZaw55cn4c
10/01/03 21:42:10
java.text.SimpleDateFormat の質問です。
URLリンク(codepad.org)
のようなエラーが発生するのですが、何が悪いのでしょうか?
980:デフォルトの名無しさん
10/01/03 21:52:15
そのエラーメッセージが理解できないという事は、
Javaの言語仕様をきちんと読んでいないだろ。
981: ◆QZaw55cn4c
10/01/03 21:56:33
>>980
なにぶん初学者で、テキストの範囲をちょっと逸脱するとこうなってしまいます。
もうちょっと我慢して教科書を読んでいきます。
982:デフォルトの名無しさん
10/01/03 22:12:21
「スローするにはキャッチまたは、スロー宣言をしなければなりません。」
と丁寧に教えてくれてるもんな。頑張ってこの意味を理解しようね。
俺は面倒がってExceptionでスロー宣言しまくりだけどなー。(小言は聞こえない)
983:デフォルトの名無しさん
10/01/03 22:20:58
>俺は面倒がってExceptionでスロー宣言しまくりだけどなー。(小言は聞こえない)
catch して捨てるよりはまし。
>>979
みたいな、サンプルプログラムでは、 throw Exception しちゃうのが
結局、一番合理的な解じゃないかな。
catch しても printStackTrac()ぐらいしかできることないっしょ。
コードが読みにくくなるだけで、実用上のメリットがさしてない、
ただ、初心者が、「どこでも throw Exception すればいい」 と思い込んだらちょっとまずいってだけで、
984:デフォルトの名無しさん
10/01/03 22:30:44
一番正しいのは契約プログラミング的な考え方で、前提条件は全て事前チェック
しておいて、それに引っかからないモノはそれこそ例外として扱うことじゃないかと
思ってるんだがどうかな?
985:デフォルトの名無しさん
10/01/03 22:35:06
最初は、throw Exceptionされているメソッドを呼び出すときは、呼び出し元もthrow Exception定義しましょうでもかまわないと思う
だんだん勉強して、例外についての理解も進めば、throwかcatchかどっちがいいか分かるようになるでしょ
ところでそろそろ次スレたてるね
986:デフォルトの名無しさん
10/01/03 22:38:55
次
★★Java質問・相談スレッド135★★
スレリンク(tech板)
987:デフォルトの名無しさん
10/01/03 22:47:54
でも例外に関するエラーメッセージは解りづらい気がする
例外って常用的な日本語だから、慣れないうちはスペルミスでもあるのかと思ってしまう。
さらにExceptionがソースをいくら検索してもみつからないって混乱したり
988:デフォルトの名無しさん
10/01/03 23:03:13
JAVAをはじめてまだ1週間程の初心者なんですが、
URLリンク(kitten.ace.nitech.ac.jp)
ここで公開されているアプリと似たものを作りたいと思っています。
それでこのアプリのソースコードが見てみたいんですが、
ソースコードが公開されていないアプリのソースコードを見る方法ってありますか?
馬鹿な質問かもしれませんが教えていただきたいです。
よろしくお願いします。
989:デフォルトの名無しさん
10/01/03 23:19:06
>>988
>>91
これで一応見ることができる
990:デフォルトの名無しさん
10/01/03 23:36:33
>>989
ありがとうございます!
やってみます。
991:デフォルトの名無しさん
10/01/04 10:31:42
C/C++での「配列のある要素のポインタを関数に渡す」みたいな処理はどうやるのでしょうか?
void func(int n, int a[]);
int main(void){
int a[] = {1,2,3,4,5};
func(3, a+2); //これの「a+2」
}