랜덤 이미지 생성기


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.