プレイ日記
カービィ★KIRBY Kirbystar_Nin751
画像を文字列に/文字列から画像を展開するテスト…なんだけど。 赤チャンネルが抜けちゃうぞ……? 1文字1pxみたいなことをしてる。
9そうだね
プレイ済み
返信[1]
親投稿
NAGI KOUCHA_PAN
色の内部形式(16ビット形式:&bRRRRRGGGGGBBBBBA)を1バイトで保存して赤と緑の一部が抜けてる?
2そうだね
プレイ済み
返信[2]
親投稿
カービィ★KIRBY Kirbystar_Nin751
サイズが膨れ上がるのを覚悟でRGBのチャンネルごとで文字列化したほうが正確だろうなあ…
1そうだね
プレイ済み
返信[3]
親投稿
NAGI KOUCHA_PAN
色コードの記録形式には2種類あってRGB関数の形式(4バイト&HAARRGGBB)と内部形式(16ビット&bRRRRRGGGGGBBBBBA)があります。RGB関数の形式4バイトを文字コードと同じ2バイトで記録すると&HGGBBつまり緑と青だけになります。内部形式2バイトで文字コード(2バイト)で記録すれば赤RRも記録されると思います
4そうだね
プレイ済み
返信[4]
親投稿
スー thanks_0u0
?HEX$(ASC(CHR$(&HFFFFFFF7)))、とかやってみると、文字が16bitだけなのがわかると思います( ´ u ` ) GSAVEで16bitの色にして文字化すればキチンと保存できます。が、配列を使うのでだいぶ遅めです。 先ほど試したところ、GSPOITを使って自前で16bit化する方法でも配列と変わらない時間がかかりましたー。 旧3DSで512x512を保存→展開するのに約20秒かかりますので、使い所がなかなか難しそうですね( ´・ω・` )
4そうだね
プレイ済み
返信[5]
親投稿
カービィ★KIRBY Kirbystar_Nin751
一応現状のコード張ってみます。(一番最初の投稿時点のもの) どうやっても考えても赤チャンネルが……
1そうだね
プレイ済み
返信[6]
親投稿
スー thanks_0u0
やっぱり32bitの色コードを文字として保存しているから、16bit分の情報が落ちちゃってますね( ´ ω ` ) 色コードは0〜&HFFFFFFFFまで、文字コードは0〜&HFFFFまでなので、上位16bit(=透明度と赤の情報)が丸ごと消えちゃってますです。 直すには2通り、色コードは32bitのまま1ドット2文字にする方法と、色コードを16bitにする方法があります(・u・)
2そうだね
プレイ済み
返信[7]
親投稿
MIKI ifconfig
20秒は遅すぎるような??? ↓これで 8.5 秒です。 option defint var t0 = millisec, g[0] gsave 4,g,1 var i, n = len(g), s$ for i = 0 to n - 1: inc s$,chr$(g[i]): next for i = 0 to n - 1: g[n - 1 - i] = asc(s$[i]): next gload g,1,1 ? (millisec - t0) / 1e3
3そうだね
プレイ済み
返信[8]
親投稿
MIKI ifconfig
あっ完全にタイミングを逸した・・・
2そうだね
プレイ済み
返信[9]
親投稿
スー thanks_0u0
そう、遅すぎでした!GSPOITでやってるのかなって思って、それをそのままGSAVEに置き換えちゃってました。1dotずつGSAVEするという非効率感。。。 計った後でmikiさんの方法に気付きましたー(ノ´∀`*)
2そうだね
プレイ済み
返信[10]
親投稿
MK sou51m
変換自体の話ではないですが、プログラム内にデータとして置きたい場合は、 改行コードの扱いをうまくやっとく必要もありますね
2そうだね
プレイ済み
返信[11]
親投稿
コメ見て自分の無名も色合成で1ドットずつgsave色取得してたの思い出して猛烈にプチコンいじりたい
2そうだね
プレイ済み