다양한 크기의 이미지 가장자리에 텍스트를 오버레이할 수 있기를 원합니다. 다양한 크기의 이미지에는 이미지 너비의 30%를 차지하는 검은색 막대가 표시됩니다.
다음 bash 스크립트가 있습니다.
#!/bin/bash command -v Convert>/dev/null 2>&1 || { echo >&2 "변환해야 하는데 아직 설치되지 않았습니다. 중단 중!";exit 1;} command -v recognition>/dev/null 2>&1 || { echo >&2 "식별해야 하는데 아직 설치되지 않았습니다. 중단 중!";exit 1;} Command -v bc >/dev/null 2>&1 || { echo >&2 "bc가 필요하지만 아직 설치되지 않았습니다. 중단 중!";exit 1;} basedir="$(디렉터리 이름"$(readlink -f"${1}")")" CD "$basedir" echo "제목을 입력하고 Enter를 누르세요" 제목 읽기 if [-z "$title"]; printf "제목을 선택하지 않았습니다. 중단합니다!\n" 1번출구 필리핀 제도 printf "제목은 $caption\n입니다." 만약에[ ! -d "$basedir"/bakups]; mkdir -p "$basedir"/bakups 필리핀 제도 while [ $# -gt 0 ]; 파일="$1" if [ -s "$file" ]; cp -f "$file" 백업 내보내기 이미지 크기 = $(식별된 형식 "%w, %h" "$file") 이미지 너비 내보내기=$(echo "$imagesize" | cut -f1 -d",") 이미지 높이 내보내기=$(echo "$(echo "$imagesize" | cut -f2 -d",")*0.05" | bc) 변환 -배경 "#0008" -font /usr/share/fonts/truetype/fonts-georgewilliams/CaslonRoman.ttf -pointsize 80 -흰색 채우기 -중력 동쪽\ -size $(echo $imagewidth)x$(echo $imageheight) title:"$caption" \ "$file" +swap -gravity east -composite "$file" && \ printf "\n$파일 워터마크가 성공적으로 추가되었습니다\n" 필리핀 제도 옮기다 완벽한
그것은 나에게 다음과 같은 결과를 제공합니다:
텍스트가 검은색 테두리를 넘어 확장됩니다.
텍스트를 여백 내에 유지하고 텍스트 뒤의 음영 처리된 가로 막대를 제거하고 싶습니다.
텍스트가 여백 내에 유지되도록 bash 스크립트를 조정하고 포인트 크기를 변경할 수 있지만 다른 크기의 이미지에 대해 bash 스크립트를 조정할 필요 없이 자동으로 이 작업을 수행하고 싶습니다.
텍스트/여백 위치를 아래 예와 같이 표시하고 싶습니다.
답변1
저는 imagemagick 전문가는 아니지만 먼저 검정색 섹션을 만들고 caption:
이를 사용하여 텍스트 줄 바꿈을 수행하는 것이 더 쉽다는 것을 알았습니다. 그런 다음 검은색 부분 없이 자동차 사진을 추가합니다. 이것이 귀하가 필요한 솔루션을 향해 나아가는 데 충분하기를 바랍니다.
먼저, 이미지를 개별적으로 1650x1232의 자동차에 맞춰 수동으로 자르고 3WL51.jpg
필요한 추가 검은색 부분에 500x1232를 사용했습니다.
caption="1925 Ford Model A Touring Car
*
Front Engine Rear Wheel Drive"
font=/usr/share/fonts/liberation/LiberationSans-Regular.ttf
file=3WL51.jpg
convert -size 500x1232 -font "$font" \
-pointsize 80 -background "#0008" -fill white \
-gravity center caption:"$caption" \
"$file" +swap +append out.jpg