작가는 단어로 작업할 뿐만 아니라 종종 이미지로 작업해야 합니다. 기술적인 글쓰기는 기술과 프로세스를 전달하기 위해 많은 스크린샷을 제시하는 것을 포함합니다. 게시 플랫폼마다 이미지 형식이나 파일 크기 등 이미지에 대한 다양한 요구 사항이 있을 수 있습니다.
IT 컨설턴트 및 시스템 엔지니어로서 저는 일반적으로 필요한 형식으로 Microsoft Word(.doc)를 사용하여 클라이언트 결과물로 많은 기술 문서를 작성했습니다. 모든 문서는 콘텐츠가 추가됨에 따라 빠르게 성장할 수 있습니다. 초기에 스크린샷은 파일 크기가 매우 큰 비트맵(.bmp)인 경우가 많았습니다. 서버에 운영 체제 설치를 설명하는 문서는 결국 매우 큰 파일이 될 수 있습니다.
이미지를 읽을 수 없도록 렌더링하지 않고 축소하는 것은 힘든 작업이었습니다. 비트맵은 jpeg 파일 및 이후의 png 파일로 변환될 수 있습니다. 사무실 제품군을 LibreOffice로 전환한 후에도 편집은 계속해서 어려운 문제였습니다. 다행히 오늘날 대부분의 스크린샷 도구는 png와 같은 더 작은 형식으로 저장합니다.
Opensource.com은 기사에 사용되는 이미지에 특정 제한을 두고 있습니다. 나는 내 기사의 이미지를 준비하는 빠른 3단계 방법을 개발했습니다. 첫 번째 단계는 창 크기 조정 또는 글꼴 변경과 같은 스테이징에 대해 현명하게 대처하는 것입니다. 두 개의 추가 단계가 매우 반복적이었습니다. 이는 이미지가 600픽셀 너비 제한을 초과하지 않도록 하고 테두리를 적용하기 위한 것입니다.
prepimg.sh 스크립트
prepimg.sh
라는 Bash 스크립트를 작성했습니다. 이러한 작업을 처리합니다. 이 스크립트는 ImageMagick 제품군의 두 가지 도구를 사용합니다.
이미지 크기 조정
스크린샷 유틸리티는 이미지를 Pictures
에 저장합니다. Screenshot-20210923222312.png
와 같은 일반 이름을 가진 디렉토리 . 내 prepimg.sh
스크립트는 이 디렉토리에 있는 파일의 픽셀 너비를 확인하고 제한을 초과하는 모든 파일의 크기를 조정합니다. 이 단계에서는 식별을 사용합니다. ImageMagick 제품군의 프로그램을 사용하여 너비(%w)를 결정합니다.
$ identify -format %w Screenshot-20210903202655.png
1217
너비 값은 W
변수에 할당됩니다. 600 제한에 대한 비교기로 사용합니다. 제한 자체는 $MAXWIDTH
변수를 통해 구성할 수 있습니다. . 너비가 MAXWIDTH를 초과하는 것으로 확인되면 convert라는 다른 ImageMagick 프로그램이 이미지의 너비를 줄이기 위해 호출됩니다. 다음은 내 스크립트의 이미지 처리 기능입니다.
if [ "$W" -gt "$MAXWIDTH" ]
then
[[ $VERBOSE -gt 0 ]] && echo "${1} is ${W} - reducing"
convert -resize "${MAXWIDTH}" \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
...
이미지는 필요에 따라 크기가 줄어들고 $READY
에 의해 정의된 다른 디렉토리에 저장됩니다. 변하기 쉬운. 이 경우 이미지는 실제로 약간 더 작게(598픽셀) 크기가 조정되어 다음에 보여드릴 테두리를 추가할 수 있습니다.
이미지에 테두리 추가
때때로 이미지가 웹 페이지의 배경과 혼합되어 나타날 수 있습니다. 이미지의 가장자리까지의 전경색이 사이트의 배경색과 같기 때문입니다. 다음은 예입니다:
이미지 제공:
테두리가 없는 이미지입니다. (CC BY-SA 4.0)
위의 이미지에서 볼 수 있듯이 이미지의 가장자리가 어디인지 알 수 없습니다. 이 문제는 흰색에만 국한되지 않습니다. 각 개별 사이트와 사용하는 테마 색상에 따라 다릅니다. 따라서 배경이 빨간색이고 이미지 가장자리도 빨간색이면 이와 동일한 문제가 발생합니다. 내 스크립트는 convert를 사용하여 이 문제를 해결합니다. 도구. -테두리 옵션은 1픽셀 크기의 각 이미지 파일에 테두리를 추가합니다. 이 옵션만으로도 충분하지만 -bordercolor를 사용하여 색상을 설정하고 싶습니다. 옵션. 다음은 예입니다:
convert -bordercolor black -border 1 Screenshot-20210903202655.png
아래는 테두리가 있는 동일한 이미지입니다. 더 멋있어 보이지 않나요?
이미지 제공:
테두리가 있는 이미지. (CC BY-SA 4.0)
이미지가 준비되었습니다
for
를 사용합니다. 루프를 사용하여 스크린샷 디렉토리를 반복합니다. process_img
함수를 호출합니다. 각 파일에 대해. 이 함수는 너비와 테두리를 모두 처리합니다. 전체 코드는 파일이 실제로 이미지인지 확인하는 것과 같은 일부 온전성 검사를 수행합니다.
process_img() {
# verify that file is an image file, and then get dimensions
if file "${SCREENSHOTS}"/"${1}" | grep -qE 'image|bitmap'; then
[[ $VERBOSE -gt 0 ]] && echo "${1} is an image"
W=$(identify -format %w "${SCREENSHOTS}"/"${1}")
else
echo "File ${SCREENSHOTS}/${1} is not an image."
W=0
fi
# resize and border
if [ "$W" -gt "$MAXWIDTH" ]
then
[[ $VERBOSE -gt 0 ]] && echo "${1} is ${W} - reducing"
convert -resize "${MAXWIDTH}" \
-bordercolor $BORDER \
-border 1 \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
else
convert -bordercolor $BORDER \
-border 1 \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
fi
}
스크립트의 마지막 단계는 처리된 파일을 Ready
라는 하위 디렉토리에 저장하는 것입니다. , 이는 $READY
라는 변수에 의해 결정됩니다. . 이렇게 하면 나중에 사용할 수 있도록 원본 파일이 보존됩니다.
사용
Prepimg.sh
인수와 사용법을 설명하는 예상 도움말 기능이 포함되어 있습니다.
$ prepimg.sh -h
prepimg.sh Version 0.7 - written by Alan Formy-Duval
prepimg.sh [OPTIONS]
--verbose, -v Be verbose
--directory, -d Screenshot directory (default: /home/alan/Pictures/Screenshots)
--ready, -r Ready directory (default: /home/alan/Pictures/Screenshots/Ready)
--border, -b Border color (default: black)
코드 및 결론
기사에 제시된 코드는 불완전하며 의사 코드로 간주되어야 합니다. 내 Git 저장소에서 전체 스크립트를 볼 수 있습니다.
ImageMagick 제품군은 이미지를 조작하기 위한 강력한 도구 세트입니다. 내 작은 스크립트에 통합된 기능 외에도 더 많은 작업을 수행할 수 있습니다. 기자 Jim Hall도 최근에 이미지 크기를 조정하는 데 사용하는 방법에 대해 썼습니다.
Bash 스크립팅을 선호하든 C 또는 Python과 같은 다른 언어로 코딩하든 자동화는 큰 도움이 됩니다. 시간이 지남에 따라 저는 약간의 코드가 얼마나 많은 골칫거리를 줄이고 시간을 더 잘 활용할 수 있는지 보았습니다.