順番に:
- プログラムでイメージを描画します。
これは、残念ながら、ドキュメント化されていないsvg語彙を使用したくない場合を除き、各バイトを個別に処理する必要があることを意味します。
幸いなことに、Factor には、配列を操作するための高階関数が多数あります。さらに、有望に聞こえるimages.processing語彙には、この種のことを表す単語はあまりありません。
実際にやりたいことは (私が知る限り)、有効なファイル headerを作成し、画像データとヘッダーを.bmpファイルに書き込むことです。
- 表示します。
簡単ではありません。(それが何であれ - を実装するものなので、ストリームまたはファイル オブジェクトを期待しているのではないでしょうか?) を取得するように見えますが、明らかui.imagesに現在の UIでそれを使用しています。これは、既に UI を持っている場合はより単純である可能性があります。image-namepath>>displayworld
worldのコンストラクタを見てください。
TUPLE: world < track
active? focused? grab-input? fullscreen? saved-position
layers title status status-owner text-handle handle images
window-loc pixel-format-attributes background-color promise
window-controls window-resources ;
くそー、息子。
- ファイルに保存します。
これは、コツをつかめば非常に簡単なので、実際に実装することができます。
フォルダーに画像があり、それをリスナーにロードします。(繰り返しますが、それを表示することはまったく別の話です)。
USING: images.bitmap io.encodings.binary io.files ;
: bmp-open ( path -- stream ) binary <file-reader> load-bitmap ;
<file-reader>pathとencoding(から)が必要で、スタックにio.encodingsを残します。これは、などが探しているものです。io.streamload-pngload-bitmap
これloading-bmpにより、思ったよりも便利な が得られます。
T{ loading-bitmap
{ file-header
T{ file-header
{ size 12726 }
{ offset 54 }
{ header-length 40 }
}
}
{ header
T{ v3-header
{ width 64 }
{ height 66 }
{ planes 1 }
{ bit-count 24 }
{ image-size 12672 }
}
}
{ color-index
B{
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 ~12573 more~
}
}
}
探しているデータは明らかにcolor-index>>.
dup color-index>>
--- Data stack:
T{ loading-bitmap f ~file-header~ ~v3-header~ f ~byte-array~ f }
B{ 255 255 255 255 255 255 255 255 255 255 255 255 255 255...
好きなようにその配列をいじってから、ただ実行して>>color-index(またはloading-bitmapのコンストラクターをいじって)、それらのバイトをファイルに書き込むことができます。
TUPLE: loading-bitmap
file-header header color-palette color-index bitfields ;
のようなもの、loading-bitmap>bytesまたはbitmap>bytesそこで役立つはずです。
昨夜この回答を書いていたとき、RosettaCodeでビットマップ関連のものを調べようとはまったく考えていませんでした。
