পিএনজিগুলিতে ব্যাচ এক্সপোর্ট এসভিজির কোনও উপায় আছে কি?


18

আমার এই এসভিজিএস রয়েছে এবং আমি সেগুলি পিএনজি চিত্রগুলিতে রফতানি করতে চাই, আমি এগুলি ইনসকেপ দিয়ে রফতানি করতে পারতাম তবে তার অর্থ প্রতিটি ফাইল খুলুন এবং সেই ফাইলটি পিএনজিতে রফতানি করতে হবে যা কার্যকর নয় (আমার শতগুলি রয়েছে)।

কিভাবে আমি এটি করতে পারব?

উত্তর:


16

পূর্বে গৃহীত উত্তরের দ্বারা অনুপ্রাণিত হয়ে আমি এই ওয়ান-লাইনার নিয়ে এসেছি:

ইনস্কেপ সংস্করণ 0.92.4 এবং এর আগেরটির জন্য:

for file in *.svg; do inkscape $file -e ${file%svg}png; done

এইভাবে আপনার কোনও স্ক্রিপ্ট কল করার দরকার নেই। আপনি যদি চান, আপনি বর্তমান ডিরেক্টরিতে সমস্ত এসএনজিএসকে পিএনজিতে রূপান্তর করার জন্য একটি নাম তৈরি করতে পারেন:

alias svgtopng='for file in *.svg; do inkscape $file -e ${file%svg}png; done'

ইনস্কেপ সংস্করণ 1.0 বিটা এবং তার পরে:

for file in *.svg; do inkscape $file -o ${file%svg}png; done

এইভাবে আপনার কোনও স্ক্রিপ্ট কল করার দরকার নেই। আপনি যদি চান, আপনি বর্তমান ডিরেক্টরিতে সমস্ত এসএনজিএসকে পিএনজিতে রূপান্তর করার জন্য একটি নাম তৈরি করতে পারেন:

alias svgtopng='for file in *.svg; do inkscape $file -o ${file%svg}png; done'

1
${file%svg}pngএকটি দুর্দান্ত কৌশল! আমি এর আগে দেখিনি।
চেস্টার

আমি মনে করি এটি ফাইলের নামের জায়গাগুলির সাথে কাজ করে না।
জেনোম

26

দেখা যাচ্ছে আপনি কমান্ড লাইন থেকে ইনস্কেপ ব্যবহার করতে পারেন:

`#{INKSCAPE_PATH} -z -f #{source_svg} -w #{width} -j -e #{dest_png}`

আরো বিস্তারিত

আমি কল্পনা করেছি আপনি সমস্ত এসভিজি ফাইল প্রক্রিয়া করার জন্য একটি সাধারণ বাশ স্ক্রিপ্ট লিখতে পারেন:

#!/bin/sh

for file in *.svg
do
     /usr/bin/inkscape -z -f "${file}" -w 640 -e "${file}.png"
done

উপরের উদাহরণটি আউটপুট ফাইলগুলিতে .png এক্সটেনশন যুক্ত করে বর্তমান ডিরেক্টরিতে সমস্ত .svg ফাইল রূপান্তর করে।


আমি কয়েকশো এসভিজি রফতানি করার চেষ্টা করছি, আমি কীভাবে রফতানির মান (লক্ষ্য) সেট করতে পারি যাতে তারা নিজের নাম রাখে? কারণ এটি অল্প পরিমাণে ভাল কাজ করে বলে মনে হচ্ছে।
উরি হেরেরা

@ উরিহেরা: আমি উত্তরটি আপডেট করেছি
সের্গেই

সমস্ত ফাইল saved ফাইল} .png এর পরিবর্তে {file} .svg.png ফর্ম্যাট সংরক্ষণ করা হয়েছে? কীভাবে ঠিক করব? এবং মূল এসভিজিতে এটি নীচের ডানদিকে সামান্য শর্টকাট আইকন প্রদর্শিত হবে যা এটি পিএনজিতে রূপান্তরিত হয়ে গেলে অদৃশ্য হয়ে যায় (আমি আইকন প্যাক রূপান্তর করার চেষ্টা করছি)
Tosho

@ তোশো বর্তমানে আমি উইন্ডোজ এ আছি তবে এটির মতো কিছু হওয়া উচিত: পেস্টবিন.
com

2
@ তোশো আপনি এটিও করতে পারেন ${file%svg}png। আপনি আরও সম্ভাবনার জন্য এখানে পড়তে পারেন ।
jja

5

গ্রাফিকাল নটিলাস স্ক্রিপ্ট


সংক্ষিপ্ত বিবরণ

কমান্ড লাইনটি ব্যাচের রূপান্তরগুলির জন্য দুর্দান্ত তবে কখনও কখনও আপনি কেবল আপনার জিইউআইয়ের আরাম ত্যাগ করতে চান না। এজন্য আমি ব্যাচকে এসএনজি ফাইলগুলিকে পিএনজি চিত্রগুলিতে রূপান্তর করতে একটি জিইউআই ভিত্তিক নটিলাস স্ক্রিপ্ট কোড করেছিলাম। কাস্টম ক্রিয়া সহ অন্যান্য ফাইল পরিচালক (যেমন: থুনার) এছাড়াও সমর্থিত হওয়া উচিত।

স্ক্রিনশট

এখানে চিত্র বর্ণনা লিখুন

লিপি

#!/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

আমি এই উত্তরটি আপডেট রাখার চেষ্টা করব তবে দয়া করে আমার গিথুব সংগ্রহশালাটি পরীক্ষা করে দেখুন তবে স্ক্রিপ্টের সর্বশেষ সংস্করণের জন্য ।

স্থাপন

সমস্ত নটিলাস স্ক্রিপ্টগুলির জন্য জেনেরিক ইনস্টলেশন নির্দেশাবলী এখানে পাওয়া যাবে । নিম্নলিখিত কমান্ডগুলি সমস্ত প্রয়োজনীয় নির্ভরতা আবরণ করা উচিত:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install yad inkscape imagemagick

আরও তথ্যের জন্য দয়া করে উপরের স্ক্রিপ্ট শিরোনামের সাথে পরামর্শ করুন।

ব্যবহার

স্ক্রিপ্টটি ইনস্টল করার পরে আপনার এটি ফাইল ম্যানেজারের প্রসঙ্গ মেনু থেকে আবেদন করতে সক্ষম হওয়া উচিত। কেবল এক বা একাধিক এসভিজি ফাইল নির্বাচন করুন এবং আপনার প্রসঙ্গ মেনুতে উপযুক্ত এন্ট্রিতে ক্লিক করুন। একটি জিইউআই ডায়ালগটি রূপান্তরকে সম্মিলিত করে বিভিন্ন বিকল্পের সাথে উপস্থিত হওয়া উচিত।

আপনি হয় ডিপিআই বা প্রস্থের ভিত্তিতে এসভিজি রূপান্তর করতে পারেন। উভয় ক্ষেত্রেই অনুপাত সংরক্ষণ করা হবে। রূপান্তর বোতামে ক্লিক করার আগে আপনার ডিপিআই বা পছন্দের প্রস্থ সরবরাহ করার বিষয়টি নিশ্চিত করুন।

আপনি সম্পূর্ণ এসভিজি ফাইল রফতানি করতে বা কেবল ক্রপযুক্ত অঙ্কনগুলির মধ্যেও চয়ন করতে পারেন। যদি আপনার এসভিজি ক্যানভাসে প্রচুর খালি জায়গা থাকে তবে রফতানি বিকল্প হিসাবে "অঙ্কন" বেছে নেওয়ার পরামর্শ দেওয়া হয়।


2

এখানে আরও পাঠযোগ্য স্ক্রিপ্টিং ভাষায় কিছুটা ভিন্ন বিকল্প সমাধান - পাইথন। এটি ব্যাচটি আপনার সমস্ত এসএমজি রফতানি করতে পারে। বিশেষত আদর্শ যদি আপনি অ্যান্ড্রয়েড ডেভ করছেন এবং একটি একক এসভিজি থেকে একাধিক পিএনজি তৈরি করতে হয়।

দাবি অস্বীকার: আমি লিব লিখেছিলাম। আশা করি এটি কাউকে সাহায্য করবে।

ক্লিক এখানে করুন

একটি সাধারণ ব্যবহারের জন্য, একটি ফোল্ডারে লাইব্রেরিটি ডাউনলোড করুন, একই ফোল্ডারে এসভিএস রাখুন, তারপরে চালান

python exporter.py

cdফোল্ডারে যাওয়ার পরে কমান্ড লাইন / টার্মিনালে । আরও উন্নত বিকল্পের জন্য, README দেখুন


ধন্যবাদ ডেভিড, আমি আরও উত্তর সরবরাহ করতে আমার উত্তর সম্পাদনা করেছি!
কেভিন লী

1

যদি সমস্ত ফাইল না হয় তবে কেবলমাত্র নির্দিষ্ট এসভিজি ফাইলগুলিকেই পিএনজিতে রূপান্তর করা দরকার, ফাইলের নাম স্বয়ংক্রিয়ভাবে উত্পন্ন করতে কেউ ব্যবহার করতে পারে :sed

inkscape --without-gui --export-width=1280 --export-png=`echo $1 |sed -e 's/svg$/png/'` $1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.