##砂嵐画像
こういうやつです。
Shaderで任意のピクセル数の砂嵐画像がほしいな~となったので作成する方法を調べました。
もっと楽な方法あったら教えて下さい。
##ImageJ Fijiとは?
ImageJとは、Java というプログラミング言語で書かれた画像解析のためのソフトウェアです。
Fiji はその ImageJ の種類の内の一つで、元々の ImageJ に様々な機能が追加されているパッケージです。オープンソースである ImageJ は、研究者・開発者により機能の追加が容易にできます。Fiji is just ImageJ (Fiji こそがまさに ImageJ だ)と表現されるように、Fiji はオープンソースである ImageJ の利点を最大限に活かして多くの機能が追加され、まとめられています。
Fiji をインストールすれば多くの機能を利用することができます。例えば、超解像顕微鏡の一つであるSTOMのデータ解析のためのプラグインが含まれています。また、Java 以外のプログラミング言語で ImageJ を操作したり機能の追加をする機能も付属しています。
【引用元】:ImageJ について
##手順
まずはImageJ Fijiをダウンロードします。
ダウンロードリンク
ダウンロード完了したらImageJ-win64.exe
を起動します。
##コード
import random
from ij import ImagePlus
from ij.process import ByteProcessor
def IntByteConverter(inputnumber):
if inputnumber <= 127:
return inputnumber
else:
return -(256 - inputnumber)
width = 100
height = 100
image_values = []
for i in range(width):
for j in range(height):
image_values += [IntByteConverter(random.randrange(0, 256, 1))]
bp = ByteProcessor(width, height, image_values)
imp = ImagePlus("Random", bp)
imp.show()
Runを押すと画像が生成されます。
あとはCtrl
+S
で画像を保存すればOKです。
砂嵐のピクセル数を変更したい場合は下記の箇所の数値を変えれば可能です。
width = 10
height = 10
2019/11/30 追記
かなり短く書ける方法を教えて頂きました。
ニッチなAPIを使った場合
— Kota Miura (@kotapub) November 29, 2019
from ij.gui import NewImage
imp = NewImage.createByteImage("noise", 100, 100, 1, NewImage.GRAY8 + NewImage.FILL_BLACK)
imp.getProcessor().noise(100)https://t.co/L64UBLB8BJ()
from ij.gui import NewImage
imp = NewImage.createByteImage("noise", 10, 10, 1, NewImage.GRAY8 + NewImage.FILL_BLACK)
imp.getProcessor().noise(100)
imp.show()
##java.lang.IllegalArgumentException
保存したPythonファイルを指定して実行する際にこのエラーが出ました。
保存先のディレクトリ名にマルチバイト文字が含まれているとダメっぽいです。
##参考リンク