Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Как экспортироать последние версии .svg в .png?  (Прочитано 1500 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 173
    • Просмотр профиля
Это работало из ubuntu 14.04
ICON_FOLDER="path_to_the_destination"
SIZE="256"
 
 
## DO NOT TOUCH AFTER ##
########################
 
# for each file ending with .svg
for file in *.svg
do
        # strip the .svg part and save output as $filename
        filename=`echo "${file}" | sed s/.svg//`
 
        # Generate PNG
        for WIDTH in $SIZE; do
                # export current file to .png
                /usr/bin/inkscape -z -f "${file}" -w $WIDTH -e "$filename.png"
 
                # optipng
                optipng -o9 *.png
 
                # move files
                for PNG in *.png*
                do
                        if [ -f $PNG ]; then
                        format=`identify -format '%w' $PNG`
                                # Create directory
                                if [ ! -f ${ICON_FOLDER}/${format}x${format}/apps ]; then
                                        mkdir -p ${ICON_FOLDER}/${format}x${format}/apps
                                fi
                                # Move files
                                mv -i $PNG ${ICON_FOLDER}/${format}x${format}/apps/${PNG}
                        else
                                # If no icons
                                echo "There are no PNG files"
                        fi
                done
        done
done

Это работало из ubuntu 16.04
ICON_FOLDER="path_to_the_destination"
SIZE="256"
 
 
## DO NOT TOUCH AFTER ##
########################
 
# for each file ending with .svg
for file in *.svg
do
        # strip the .svg part and save output as $filename
        filename=`echo "${file}" | sed s/.svg//`
 
        # Generate PNG
        for WIDTH in $SIZE; do
                # export current file to .png
                rsvg-convert "${file}" -w $WIDTH  "$filename.png"
 
                # optipng
                optipng -o9 *.png
 
                # move files
                for PNG in *.png*
                do
                        if [ -f $PNG ]; then
                        format=`identify -format '%w' $PNG`
                                # Create directory
                                if [ ! -f ${ICON_FOLDER}/${format}x${format}/apps ]; then
                                        mkdir -p ${ICON_FOLDER}/${format}x${format}/apps
                                fi
                                # Move files
                                mv -i $PNG ${ICON_FOLDER}/${format}x${format}/apps/${PNG}
                        else
                                # If no icons
                                echo "There are no PNG files"
                        fi
                done
        done
done

теперь не работает по некоторым новейшим .svg

Это срабатыват из ubuntu  22.04 но экспортирует в пустую, прозрачную картинку .png
inkscape --export-background=white --export-filename=output.png image1.svgconvert input.svg output.png
При том, что файловые менеджеры из ubuntu  22.04 отрисовывают превью в .svg корректно.

Чистого rsvg-convert в репо ubuntu  22.04 нет. Phatch из snap вообще не смог начать экспорт. Как быть?
« Последнее редактирование: 09 Декабря 2024, 17:12:11 от ase66 »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7482
  • Luck Tales
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #1 : 09 Декабря 2024, 14:21:26 »
Выложите пример svg-файла, посмотрю.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 173
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #2 : 09 Декабря 2024, 15:24:26 »
kangaroo-action-analyze.svg

<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 16 16">
  <path fill="currentColor" d="M.5 0a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-1 0V.5A.5.5 0 0 1 .5 0zM2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5v-1zm2 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zm2 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1-.5-.5v-1zm2 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1z"/>
</svg>

Современные .svg выглядят смазанными или пустым в старых версиях ubuntu. Но если перетащить такую картинку в Chrome, то видно, что там нарисовано.
Т.е. проблема в безудержных инновациях Линукс. Нет совместимости старых и новых версий даже в .svg.

Может можно как-то использовать thumbnails для экспорта?

« Последнее редактирование: 09 Декабря 2024, 17:10:34 от ase66 »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7482
  • Luck Tales
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #3 : 09 Декабря 2024, 17:16:28 »
экспортирует в пустую, прозрачную картинку .png
ImageMagick 6.9.12 - да, пустая пнг.
ImageMagick 7.1.1 - работает как положено.

Т.е. проблема в безудержных инновациях Линукс.
Скорее, в "новом" формате svg.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн cargan

  • Активист
  • *
  • Сообщений: 527
  • Oderint, dum metuant
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #4 : 09 Декабря 2024, 18:08:15 »
ImageMagick 7.1.1 - работает как положено.
его нет в коробке - расскажи как поставил

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7482
  • Luck Tales
    • Просмотр профиля
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 173
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #6 : 09 Декабря 2024, 18:57:24 »
Задача почти решена, но мне нужен массовый, рекурсивный экспорт в png.
Нашёл свой, кривой способ:

Нужно установить через Synaptic python3-sphinxcontrib.svg2pdfconverter (в нём есть производное rsvg-convert) и ещё нужно rename

открыть терминал в папке с .svg и

for file in *.svg; do rsvg-convert --width=256 --height=256 "${file%}" -o "$file.png"; done
потом это (не знаю как ещё исправить глюк  .svg.png)

rename 's/.svg.png/.png/g' *.png
Очень быстро и чисто работает. Нужно подправить первую команду, тогда и rename не понадобится.

Есть ли возможность запустить ImageMagick-7 сразу по всем картинкам в папке?

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3164
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #7 : 09 Декабря 2024, 19:39:36 »
Converseen по моему умеет, в том числе, svg в png конвертировать.
Или надо обязательно в терминале?
« Последнее редактирование: 09 Декабря 2024, 19:46:50 от Usermaster »
А чего это вы тут делаете, а?

Оффлайн Skif_off

  • Активист
  • *
  • Сообщений: 285
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #8 : 09 Декабря 2024, 20:41:28 »
Как вариант - качнуть свежий Inkscape в AppImage (для скорости распаковать). Только параметры надо будет уточнить.

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 173
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #9 : 09 Декабря 2024, 20:48:07 »
В Converseen очень грязный экспорт в svg. У меня ImageMagick 7.1.1 не смог закончить маке из-за нехватки памяти.

Вы не учитываете того, что мне всегда нужен пакетный экспорт.

Я свой вопрос решил. Если кому интересно, то просто подправите код в районе "$file.png" и всё будет ок.

Оффлайн Smorman

  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 423
  • When In Rome, Do As The Romans Do...
    • Просмотр профиля
    • Compizomania
Re: Как экспортироать последние версии .svg в .png?
« Ответ #10 : 09 Декабря 2024, 21:48:07 »
А так?

Сам пробовал не раз, но не svg, а .ppm в .png, но думаю сработает и с svg...

Массовоя конвертация .svg-файлов в .png-формат:
mogrify -format png *.svg
После массовой конвертации файлов в .png-формат массовое переименование сконвертированных файлов по порядковым номерам:
a=0; for i in *.png; do let a+=1; mv $i $a.png; done
OS: Ubuntu 22.04 'Jammy Jellyfish' LTS, Arch Linux + Openbox, W11 Home
PC: Lenovo H530, CPU: i5-4430 3.0, Video: nVidia PCI-X
SSD: SAMSUNG EVO870 1T, SSD: 2хSAMSUNG EVO870 500G, RAM: 16G, ODD

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7565
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #11 : 10 Декабря 2024, 04:31:11 »
for file in *.svg; do rsvg-convert --width=256 --height=256 "${file%}" -o "$file.png"; doneпотом это (не знаю как ещё исправить глюк  .svg.png)
... "${file}" -o "${file/svg/png}"; ...
« Последнее редактирование: 10 Декабря 2024, 07:10:03 от andytux »

Оффлайн Skif_off

  • Активист
  • *
  • Сообщений: 285
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #12 : 10 Декабря 2024, 23:03:29 »
На всякий случай, если у кого-нибудь возникнет аналогичная задача:

Чистого rsvg-convert в репо ubuntu  22.04 нет.
Это не совсем так, rsvg-convert лежал и лежит в пакете librsvg2-bin.
Нужно установить через Synaptic python3-sphinxcontrib.svg2pdfconverter (в нём есть производное rsvg-convert)
Это нн совсем так, просто у пакета python3-sphinxcontrib.svg2pdfconverter в зависимостях пакет librsvg2-bin (и пакет inkscape, к слову).

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3164
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #13 : 10 Декабря 2024, 23:10:58 »
Это не совсем так, rsvg-convert лежал и лежит в пакете librsvg2-bin.

Всё верно говоришь, достаточно librsvg2-bin поставить и больше ничего не надо.

Ради интереса сравнил convert, mogrify и rsvg-convert.
Первые 2 из состава imagemagick, его же и converseen использует, при конвертации в png теряется альфа канал.
rsvg-convert не теряет альфа канал при конвертации.
« Последнее редактирование: 10 Декабря 2024, 23:15:33 от Usermaster »
А чего это вы тут делаете, а?

Оффлайн Verr

  • Любитель
  • *
  • Сообщений: 75
    • Просмотр профиля
Re: Как экспортироать последние версии .svg в .png?
« Ответ #14 : 17 Декабря 2024, 20:59:26 »
Вообще, XnView/XnConvert это тоже умеют, в т.ч. и из командной строки

 

Страница сгенерирована за 0.039 секунд. Запросов: 25.