랜덤 이미지 생성기


14

임의의 데이터를 생성하고 다음을 사용하여 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 픽셀이있는 회색 이미지를 표시합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까 ?

마지막 목표는 임의의 데이터로 최소한 하나의 이미지를 생성하는 것입니다.


"무작위"를 정의하십시오. 임의 RGB 값의 시각적 평균은 결국 회색으로 향하는 경향이 있습니다.
와일드 카드

그것이 제가 생각한 것이지만, 모든 그림이 거의 동일하게 보이기 때문에이 이론을 확인할 수 없었습니다.
pxoto

15 년 전 저는 Basic (Chipmunk Basic, 구체적으로)에서 비슷한 것을했습니다. 나는 작은 그래픽 창을 가지고 무작위 색상의 픽셀을 무작위 위치로 계속 출력했습니다. 그 결과 구식 TV의 정적 인 색상과 같이 끊임없이 변하는 사진이 계속 바뀌 었습니다. 실제로 회색은 아니지만 색상은 정적으로 입니다.
와일드 카드

정적을 생성했지만 이미지는 여전히 회색입니다.
pxoto

답변:


17

먼저 파이프 라인으로 display RGB:-빌드 할 때 인코딩 된 16 진 문자열이 아닌 원시 바이트 를 제공해야합니다 hexdump | sed | tr.

둘째, 충분한 바이트를 제공하지 않습니다. 픽셀 당 3 바이트, 각 색상 채널마다 하나씩 필요합니다.

이것은 당신이 원하는 것을합니다 :

mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | display -depth 8 -size "${mx}x${my}" RGB:-

PNG에 직접 저장하려면 다음을 수행하십시오.

mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | convert -depth 8 -size "${mx}x${my}" RGB:- random.png

일반적인 출력 이미지는 다음과 같습니다.

/ dev / urandom에서 생성 된 RGB 이미지


애니메이션을 만들려면 개별 프레임을 만들고 저장할 필요가 없습니다. 원시 바이트 스트림을 ffmpeg / avconv에 직접 공급할 수 있습니다.

mx=320; my=256; nframes=100; dd if=/dev/urandom bs="$((mx*my*3))" count="$nframes" | avconv -r 25 -s "${mx}x${my}" -f rawvideo -pix_fmt rgb24 -i - random.mp4

나는 당신이 실제로 그것을 해결했다고 믿을 수 없으며, 그것이 어떻게 작동하는지 알아내는 명령을 연구 할 것입니다.
pxoto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.