다수의 이미지에서 중복된 항목을 제거하고 싶습니다. 동일한 이미지의 다른 해상도 사본이 있으므로 직접 삭제하겠습니다. 하지만 저는 이것을 선형 시간에 하고 싶습니다. 그래서 작은 스크립트를 사용하여 평균 색상 접두어로 이미지의 이름을 바꾸어 이미지를 정렬하는 것이 현명할 것이라고 생각했습니다. 문제는 CLI에서 평균 색상을 계산할 수 있는 소프트웨어가 없다는 것입니다. 당신은 있나요?
답변1
마침내 나는 잠시 동안 놀다가 ImageMagick 패키지를 찾았습니다. 스크립트 없이도 콘솔에서 한 줄의 코드로 이 작업을 수행할 수 있다는 점에서 매우 좋습니다.
for i in ./*; do mv "$i" "$(convert "$i" -scale 1x1\! -format '%[pixel:s]' info:- | cut -db -f2-)${i#./}" ;done
폴더 전체를 반복하고(전제: 이미지만 포함되어 있습니다!) convert "$i" -scale 1x1\! -format '%[pixel:s]' info:-
출력에서 관련 부분을 추출하여 평균 색상을 얻은 cut -db -f2-
다음 마지막으로 파일 이름을 바꿉니다. 무서운 것은 그것이 얼마나 효과적인지입니다.
인사
답변2
귀하의 질문을 올바르게 이해했다면 다음과 같이 할 수 있습니다.
wget -qO- 'https://www.gravatar.com/avatar/22e8a29fced165b37995aa5e05e6449b?s=32&d=identicon&r=PG' |
anytopnm |
tail -n +4 |
perl -ne 'BEGIN{$/=\3}
($r,$g,$b)=unpack"C3";$ar+=$r;$ag+=$g;$ab+=$b
END{printf "#%02x%02x%02x\n", $ar/$.,$ag/$.,$ab/$.}'
귀하의 아바타( )는 다음을 제공합니다: ( #c350c2
작성 당시 약간의 밝은 자홍색).
in format이 anytopnm
항상 반환된다고 가정합니다 . 이미지가 회색조인 경우와 같은 일부 경우에는 그렇지 않을 수 있으며, 이 경우 ImageMagick을 사용하는 것이 더 안전할 수 있습니다.PNM
P6
convert - ppm:-