답변:
이전에 받아 들여진 대답에서 영감을 얻어이 하나의 라이너를 생각해 냈습니다.
Inkscape 버전 0.92.4 이하의 경우 :
for file in *.svg; do inkscape $file -e ${file%svg}png; done
이런 식으로 스크립트를 호출 할 필요가 없습니다. 원하는 경우 현재 디렉토리의 모든 svgs를 png로 변환하기위한 별명을 작성할 수 있습니다.
alias svgtopng='for file in *.svg; do inkscape $file -e ${file%svg}png; done'
Inkscape 버전 1.0 베타 이상 :
for file in *.svg; do inkscape $file -o ${file%svg}png; done
이런 식으로 스크립트를 호출 할 필요가 없습니다. 원하는 경우 현재 디렉토리의 모든 svgs를 png로 변환하기위한 별명을 작성할 수 있습니다.
alias svgtopng='for file in *.svg; do inkscape $file -o ${file%svg}png; done'
커맨드 라인에서 Inkscape를 사용할 수 있습니다.
`#{INKSCAPE_PATH} -z -f #{source_svg} -w #{width} -j -e #{dest_png}`
모든 SVG 파일을 처리하기 위해 간단한 bash 스크립트를 작성할 수 있다고 생각합니다.
#!/bin/sh
for file in *.svg
do
/usr/bin/inkscape -z -f "${file}" -w 640 -e "${file}.png"
done
위의 예는 현재 디렉토리의 모든 .svg 파일을 변환하여 출력 파일에 .png 확장자를 추가합니다.
개요
명령 행은 배치 변환에 유용하지만 GUI를 편안하게 사용하고 싶지 않은 경우가 있습니다. 그렇기 때문에 SVG 파일을 PNG 이미지로 일괄 변환하기 위해 GUI 기반 노틸러스 스크립트를 코딩했습니다. 사용자 지정 동작 (예 : Thunar)이있는 다른 파일 관리자도 지원해야합니다.
스크린 샷
스크립트
#!/bin/bash
# NAME: SVG2PNG
# VERSION: 0.1
# AUTHOR: (c) 2014 Glutanimate (https://github.com/Glutanimate)
#
# DESCRIPTION: Simple application to convert SVG files to PNG files based on DPI or resolution.
# Designed to work as a context menu script in file managers like Nautilus and Thunar.
#
# FEATURES: - Converts SVG image file to PNG raster of a specific DPI or width
# - SVG preview
# - choose between converting the full SVG page or only the cropped image
#
# DEPENDENCIES: inkscape imagemagick yad
# YAD (1) is an advanced for of Zenity with many improvements. It's not included in the
# official Ubuntu repos yet (2) but can be installed from a webupd8 PPA (3)
#
# LICENSE: MIT license (http://opensource.org/licenses/MIT)
#
# NOTICE: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
# OR OTHER DEALINGS IN THE SOFTWARE.
#
#
# USAGE: SVG2PNG image1.svg image2.svg [..]
# I recommend installing this script as a context menu action for your file manager.
# Instructions for Nautilus may be found on AskUbuntu (4).
#
# NOTES: The script uses convert for previews because it's faster. For optimal results
# the actual conversion is done with inkscape's command line interface.
#
# LINKS: (1) https://code.google.com/p/yad/
# (2) https://bugs.launchpad.net/ubuntu/+bug/796633
# (3) https://launchpad.net/~webupd8team/+archive/y-ppa-manager
# (4) /ubuntu/236414/how-can-i-install-a-nautilus-script
############## DIALOGS ###################
TITLE="SVG to PNG"
ICON="svg"
############## USGCHECKS #################
# checks if user selected an item
if [ $# -eq 0 ]
then
yad --title="$TITLE" \
--image=dialog-error \
--window-icon=dialog-error \
--class="$WMCLASS" \
--text="Error: no file selected" \
--button="Ok":0
echo "Error: no file selected"
exit
fi
############### GLOBVAR ##################
SVGFILES="$@"
TEMPDIR=$(mktemp -d)
PREVIEWIMG="$TEMPDIR/svgpreview.png"
############### CLEANUP ##################
trap "rm -r $TEMPDIR" EXIT
############## FUNCTIONS #################
converttosvg_dpi(){
echo "Converting based on DPI."
while [ $# -gt 0 ]; do
echo "$# file(s) left to convert."
SVGFILE="$1"
FILESTEM="${SVGFILE%%.*}"
PNGFILE="$FILESTEM".png
inkscape "$SVGFILE" -z --export-dpi="$DPI" \
--"$AREASETTING" --export-png="$PNGFILE"
shift
done
echo "Done."
}
converttosvg_res(){
echo "Converting based on Width."
while [ $# -gt 0 ]; do
echo "$# file(s) left to convert."
SVGFILE="$1"
FILESTEM="${SVGFILE%%.*}"
PNGFILE="$FILESTEM".png
inkscape "$SVGFILE" -z --export-width="$WIDTH" \
--"$AREASETTING" --export-png="$PNGFILE"
shift
done
echo "Done."
}
createpreview() {
convert -resize 128x "$1" "$PREVIEWIMG"
}
getsettings() {
SETTINGS=$(yad --window-icon "$ICON" --image "$PREVIEWIMG" --width 300 --height 200 --always-print-result \
--form --separator="|" --title="$TITLE" --text "Please choose the DPI or resolution to convert to." \
--field="DPI:NUM" 10[!80..600[!10]] --field="Width in px:NUM" 16[!16..4096[!16]] \
--field="Area:":CB "Drawing"\!"Page" \
--button="Convert based on DPI:2" --button="Convert based on Resolution:3" --button="gtk-cancel:1")
RET=$? # Exit code?
if [ "$RET" = 252 ] || [ "$RET" = 1 ] # WM-Close or "Abort"
then
echo "Exiting..."
exit
fi
DPI=$(printf %.0f $(cut -d "|" -f 1 <<<"$SETTINGS")) #round values
WIDTH=$(printf %.0f $(cut -d "|" -f 2 <<<"$SETTINGS"))
AREA=$(cut -d "|" -f 3 <<<"$SETTINGS")
case "$AREA" in
Drawing)
AREASETTING="export-area-drawing"
;;
Page)
AREASETTING="export-area-page"
;;
esac
echo "DPI set to $DPI"
echo "Width set to $WIDTH"
echo "Area set to $AREA"
}
################ MAIN ####################
createpreview "$1"
getsettings
case "$RET" in
2)
echo 2
converttosvg_dpi "$@"
;;
3)
echo 3
converttosvg_res "$@"
;;
esac
exit 0
이 답변을 업데이트하려고 시도하지만 최신 버전의 스크립트에 대해서는 Github 리포지토리 를 확인하십시오 .
설치
모든 노틸러스 스크립트에 대한 일반적인 설치 지침은 여기에 있습니다 . 다음 명령은 필요한 모든 종속성을 포함해야합니다.
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install yad inkscape imagemagick
자세한 내용은 위의 스크립트 헤더를 참조하십시오.
용법
스크립트를 설치 한 후 파일 관리자의 상황에 맞는 메뉴에서 스크립트를 호출 할 수 있어야합니다. SVG 파일을 하나 이상 선택하고 상황에 맞는 메뉴에서 해당 항목을 클릭하십시오. GUI 대화 상자에는 변환에 관한 몇 가지 옵션이 나타납니다.
DPI 또는 너비를 기준으로 SVG를 변환 할 수 있습니다. 두 경우 모두 종횡비가 보존됩니다. 변환 버튼을 클릭하기 전에 DPI 또는 선택한 너비를 제공하십시오.
전체 SVG 파일을 내보내거나 자른 도면 만 내보낼 수도 있습니다. SVG 캔버스에 빈 공간이 많은 경우 내보내기 옵션으로 "도면"을 선택하는 것이 좋습니다.
좀 더 읽기 쉬운 스크립팅 언어 인 파이썬과는 약간 다른 대안 솔루션이 있습니다. 모든 svgs를 일괄 적으로 내보낼 수 있습니다. Android 개발을 수행하고 단일 svg에서 여러 png를 만들어야하는 경우 특히 이상적입니다.
면책 조항 : 나는 lib를 썼습니다. 그것이 누군가를 돕기를 바랍니다.
간단하게 사용하려면 라이브러리에 라이브러리를 다운로드하고 svgs를 동일한 폴더에 넣은 다음 실행하십시오.
python exporter.py
cd
폴더로 이동 한 후 명령 행 / 터미널에 고급 옵션에 대해서는 README를 확인하십시오 .
모든 파일이 아닌 특정 SVG 파일 만 PNG로 변환해야하는 경우 파일 이름을 자동으로 생성하는 데 사용할 수 있습니다 sed
.
inkscape --without-gui --export-width=1280 --export-png=`echo $1 |sed -e 's/svg$/png/'` $1
${file%svg}png
좋은 트릭입니다! 나는 전에 그것을 보지 못했다.