Я генерирую случайные данные и пытаюсь преобразовать их в изображение PNG, используя:
head -c 1MB < /dev/urandom | hexdump -e '16/1 "_x%02X"' | sed 's/_/\\/g; s/\\x //g; s/.*/ "&"/' | tr -d "\"" | display -depth 8 -size 1000x1000+0 rgb:-
Эта команда всегда показывает сероватое изображение с некоторыми пикселями RGB. Что я делаю неправильно ?
Моя конечная цель - создать хотя бы одно изображение со случайными данными.
command-line
display
images
random
pxoto
источник
источник
Ответы:
Во-первых, вам нужно передать
display RGB:-
необработанные байты, а не закодированную шестнадцатеричную строку, как вы строите с этимhexdump | sed | tr
конвейером.Во-вторых, вы не даете ему достаточно байтов: вам нужно 3 байта на пиксель, по одному для каждого цветового канала.
Это делает то, что вы хотите:
Чтобы сохранить непосредственно в PNG, вы можете сделать это:
Вот типичное выходное изображение:
Если вы хотите сделать анимацию, нет необходимости создавать и сохранять отдельные кадры. Вы можете передать поток необработанных байтов прямо в ffmpeg / avconv, например
источник