HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1112
LOKUプログラミング初心者ですが11解決


LOKU

リンク

2011/11/12(Sat) 00:36:36|NO.42929

読み込んだ画像をドット絵にするようなものを作りたいのです。
ファイルを参照して画像を開くところまではできました。
問題はその後です……

大まかな流れとしては
1.選択された画像の各座標の色を読み取る
2.読み取った座標に読み取った色で3×3の四角形を描画
という風にしたらできるんじゃないかと思っています。
色を読み取るところまではなんとかできましたがどうも描画がうまくいきません。
どうしたらいいでしょうか?

説明がわかりにくくてすみません。



この記事に返信する


mamo

リンク

2011/11/12(Sat) 01:00:51|NO.42930

>色を読み取るところまではなんとかできましたがどうも描画がうまくいきません。
どんな風にやってみたの?
3x3の四角を単体で描画させるところはOK?



ひらまる

リンク

2011/11/12(Sat) 01:07:41|NO.42931

できるけどそれって縮小だよ。ドット絵化とは多分違うよ。

M = 3 ; ←縮小倍率 dialog "",16 if stat == 0 : end picload refstr PicW = ginfo_sx PicH = ginfo_sy screen 1, PicW / M, PicH / M repeat PicW nowX = cnt if nowX \ M > 0 : continue repeat PicH nowY = cnt if nowY \ M > 0 : continue gsel 0 pget nowX, nowY r = ginfo_r g = ginfo_g b = ginfo_b gsel 1 color r, g, b pset nowX / M, nowY / M await 0 loop loop



ひらまる

リンク

2011/11/12(Sat) 01:21:22|NO.42934

色の平均でやってみた。
すごい綺麗に縮小できて自分でもびっくりした。

M = 3 dialog "",16 if stat == 0 : end picload refstr PicW = ginfo_sx PicH = ginfo_sy DotW = PicW / M DotH = PicH / M screen 1, DotW, DotH repeat DotW PicX = cnt * M DotX = cnt repeat DotH PicY = cnt * M DotY = cnt gosub *getAve gsel 1 color R, G, B pset DotX, DotY await 0 loop loop stop *getAve R = 0 G = 0 B = 0 repeat M nowX = PicX + cnt repeat M nowY = PicY + cnt gsel 0 pget nowX, nowY R += ginfo_r G += ginfo_g B += ginfo_b loop loop R /= M * M G /= M * M B /= M * M return



きゃすぱぁ

リンク

2011/11/12(Sat) 01:46:56|NO.42936

LOKUさんはドット絵にしたいのか、モザイク画像にしたいのかを伺いたい。
縮小だけなら、gzoomでも・・・



ひらまる

リンク

2011/11/12(Sat) 01:53:05|NO.42939

ちなみに私は普段、縮小していない画像をトレースしながらドット絵を描きます。
この方が細かいところまで見ながら自分でデフォルメができます。



きゃすぱぁ

リンク

2011/11/12(Sat) 02:17:46|NO.42941

ピクセルごとに読み取りとかやってないけど、
ドット絵というか、モザイクにしてみました。
意味を履き違えていたらすみません。
あと、簡単なことしかしてません。
↓初心者なのでひどいです。

M = 2 ;←元画像からの縮小倍率
dot = 4 ;←1ドットの大きさ(なんか変な言い方) dialog "",16 if stat == 0 : end picload refstr PicW = ginfo_sx PicH = ginfo_sy screen 1, PicW / M, PicH / M gzoom PicW / (M*dot),PicH / (M*dot),,,,PicW,PicH gzoom PicW / M, PicH / M,1,,,PicW / (M*dot),PicH / (M*dot) stop



LOKU

リンク

2011/11/12(Sat) 23:59:16|NO.42959


dialog "*",16, dialog "STAT="+stat+"\nNAME="+refstr,0,"結果" celload ""+refstr+"",1 gcopy 1,0,0,640,480 repeat:await redraw 0 ;X = p_X+cnt*4 pget X,Y // 座標(X,Y)の点を取得 a = ginfo_r b = ginfo_g c = ginfo_b // 取得した点の色情報を代入 pos X,Y color a,b,c boxf X,Y,X+4,Y+4 X++ if (X > 300) : Y+4 : X=0 if (Y > 200) : break redraw 1 loop stop
↑これでは動きませんが、こんな感じでやってます
ひどいですけどねこれw



KA

リンク

2011/11/13(Sun) 00:19:46|NO.42962

確かに正常に動かないのは分かるが、要するに「何をしたいのか」が
分からない、良く分からない状況なのですが。



LOKU

リンク

2011/11/13(Sun) 00:31:26|NO.42963

うーん……
ドット絵にしたい、といよりは、画像を荒くしたいって言ったほうが近いですかねぇ…

何がしたいかというと、そのソースでは何がしたいか分かりませんけど
読み込んだ画像をドット絵風にしたいんです……orz



暇人

リンク

2011/11/13(Sun) 00:49:24|NO.42964

いや殆ど出来てるんだが?

dialog "*",16, dialog "STAT="+stat+"\nNAME="+refstr,0,"結果" celload ""+refstr+"",1 gcopy 1,0,0,640,480 screen repeat:await redraw 0 ;X = p_X+cnt*4 gsel 1 ;追加 pget X,Y // 座標(X,Y)の点を取得 a = ginfo_r b = ginfo_g c = ginfo_b // 取得した点の色情報を代入 gsel 0 ;追加 pos X,Y color a,b,c boxf X,Y,X+4,Y+4 X+4 ;修正 if (X > 300) : Y+4 : X=0 if (Y > 200) : break redraw 1 loop stop

読み込むウィンドウと書き込むウィンドウが同じになってたから
最初に描画した色で次に読み込むドットが同じ色で塗りつぶされてた
更に縦は4ドット移動させてるのに横は1ドツトしか移動させて無い



LOKU

リンク

2011/11/13(Sun) 00:57:52|NO.42965

そ、そんな……!!
詰めが甘かったです。
というか、これくらいのことを考えられなかったのが悔しいですorz

みなさんありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.