Автор Тема: librsvg2-bin как конвертор изображений svg/png  (Прочитано 23640 раз)

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

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Нужно конвертировать svg в png. Пользоваться буду библиотекой librsvg2-bin для этих дел. Нужно пакетное преобразование.
На глобальных просторах есть небольшая инфа на эту тему. Так вот там предлагается для одиночного файла такая команда:
rsvg-convert in.svg -o out.pngА как эту команду передать в цикл, чтобы конвертирование было без изменений размеров исходника? То есть, если файл 48х48 px то и на выходе получался бы файл 48х48, только в png. Может кто подскажет как будет выглядеть?

Оффлайн sfs

  • Местный
  • *****
  • Сообщений: 700
    • PuppyRus-Arch
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #1 : Сентябрь 25, 2015, 16:39:49 »
#!/bin/sh
for i in `find "$1"/*.svg` ;do
    rsvg-convert -f png "$i" >"`dirname "$i"``basename "$i" .svg`.png"
done
Запускать: скрипт путь_к_папке_с_svg
« Последнее редактирование: Сентябрь 25, 2015, 16:42:13 от sfs »

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #2 : Сентябрь 25, 2015, 18:06:36 »
sfs, спасибо большое...если ещё подскажите как этот скрипт сделать для контекстного меню в тунар и nemo, то будет совсем замечательно :).

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #3 : Сентябрь 25, 2015, 19:22:21 »
ещё подскажите как этот скрипт сделать для контекстного меню в тунар

Thunar : "Правка - Особые действия - Добавить особое действие"

- В командной строке прописать одной строкой весь этот скрипт, начиная с for...
- после .svg`.png" (перед done) вставить ;
- переменную $1 заменить на %f
- Название действия любое понравившееся, как и значок
- На вкладке "Условия появления" отметить лишь каталог, шаблон - *
ОК
Применять к каталогам

В nemo не помню как. Там вроде своя папка для файлов-скриптов

« Последнее редактирование: Сентябрь 25, 2015, 19:26:29 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #4 : Сентябрь 25, 2015, 19:48:30 »
ek-nfn , спасибо за отклик.
Прежде чем закинуть в "особое действие" проверил в терминале, вот такая команда у меня получилась:
for i in `find "$1"/*.svg`; do rsvg-convert -f png "$i" >"`dirname "$i"``basename "$i" .svg`.png"; done
Ответ
find: `/*.svg': Нет такого файла или каталога

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #5 : Сентябрь 25, 2015, 20:40:39 »
все правильно.  для терминала переменную $1 необходимо заменить на реальный путь к каталогу с файлами  svg
« Последнее редактирование: Сентябрь 25, 2015, 20:48:30 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #6 : Сентябрь 25, 2015, 21:33:07 »
После некоторых экспериментов получил выходные иконки, только почему-то ещё и с дубляжём в формате  "название значка.svg.svg.png". Команду пробовал такую:
for i in `find "/home/user/.icons/название пака иконок"/*.svg`; do rsvg-convert -f png "$i" >"`dirname "$i"``basename "$i" .svg`.png"; doneСсорь за непонимание, но может я не правильно понял и надо поменять ещё и переменную "$i" на какой-то путь?
« Последнее редактирование: Сентябрь 25, 2015, 21:36:59 от artec »

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #7 : Сентябрь 25, 2015, 21:52:11 »
с командой rsvg-convert незнаком, но эта строчка - `basename "$i" .svg`.png выглядит странной.  Попробуйте заменить ее таким вариантом  `basename "$i"`.png
Ожидаемый результат -  name_file.svg.png
« Последнее редактирование: Сентябрь 25, 2015, 21:57:48 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #8 : Сентябрь 25, 2015, 22:11:36 »
Хм, интересно, теперь исчезли правильные расширения, а остались дубли в формате "название иконки.svg.png". Вроде как и планировалось. Команда была такая:
for i in `find "/home/user/название папка иконок"/*.svg`; do rsvg-convert -f png "$i" >"`dirname "$i"``basename "$i"`.png"; done

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #9 : Сентябрь 25, 2015, 22:15:59 »
Что имеется в виду под фразой теперь исчезли правильные расширения ?

Тут надо разбираться с выходными данными команды rsvg-convert, которые она загоняет в "`dirname "$i"``basename "$i" .svg`.png".
Я не знаком с этой утилитой, поэтому ждем sfs

« Последнее редактирование: Сентябрь 25, 2015, 22:31:38 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #10 : Сентябрь 25, 2015, 22:24:49 »
В смысле когда были дубли, то то были и значки в формате "название.png". Сейчас только остались дубли в формате "название.svg.png"...в принципе наверное не суть, пойдёт и так пока..

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #11 : Сентябрь 25, 2015, 22:28:49 »
то есть, исходные файлы заменило иконками ?
Devuan ASCII x32..x64

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #12 : Сентябрь 25, 2015, 22:35:01 »
Нет, кстати файлы создаются на директорию выше. Просто при предыдущей команде создавалось  2 вида иконок с разными расширениями (svg.svg.png и png), а теперь только один вид (svg.png).
« Последнее редактирование: Сентябрь 25, 2015, 22:51:05 от artec »

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #13 : Сентябрь 25, 2015, 22:40:16 »
Вы писали , что дубль пишется в таком формате -  "название значка.svg.svg.png"

Пока верните как было. Sfs поправит скрипт для удаления дублей
Devuan ASCII x32..x64

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #14 : Сентябрь 25, 2015, 22:50:08 »
Всё верно, я немного напутал в предыдущем сообщении. Были иконки в формате "название значка.svg.svg.png" и просто "название значка.png", а теперь только в формате "название значка.svg.png".
« Последнее редактирование: Сентябрь 25, 2015, 22:51:58 от artec »

Оффлайн sfs

  • Местный
  • *****
  • Сообщений: 700
    • PuppyRus-Arch
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #15 : Сентябрь 27, 2015, 08:28:53 »
for i in `find "$1"/*.svg` ;do - ищем все svg  в каталоге $1 (первый параметр скрипта). Перебираем всё найденное циклом. $i - файл svg с полным путем
    rsvg-convert -f png "$i" > конвертируем
"`dirname "$i"``basename "$i" .svg`.png" - итог отправляем в файл с таким же путем dirname "$i", и таким же именем basename "$i" .svg , Но расширение откидываем
basename /usr/share/pixmaps/add.svg .svg
add
и добавляем расширение .png
В итоге рядом с исходным /usr/share/pixmaps/add.svg появляется basename /usr/share/pixmaps/add.png
И так с каждым svg из указанной параметром папки

Не очень понял, какую задачу Вы решаете
Вроде во всех граф. редакторах есть batch конвертация

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #16 : Сентябрь 27, 2015, 13:53:21 »
basename "$i" .svg

интересная команда. запомню.
Раньше ходил окольным путем - решал такие задачи через фильтрацию вывода и переименование.

Для Thunar, как понимаю, комбинацию "`dirname "$i"``basename "$i" .svg`.png" можно заменить на  "%n`basename "$i" .svg`.png"
И после `dirname "$i"` , мне кажется, необходимо добавлять /. Иначе к названиям файлов добавит название каталога и вынесет на уровень выше.

Не очень понял, какую задачу Вы решаете
Вроде во всех граф. редакторах есть batch конвертация
ну бзики разные бывают. Я тоже пакетную обработку графики делаю через скрипты. Batch глючный (зависает на поврежденных файлах). XnConvert не сообщает о выброшенных из обработки файлах (например, если в имени файла ему что-то не нравится). А скрипт запустил на выделенных в ФМ каталогах и забыл. Через полчаса-час он выдал сообщение о завершении работы.
« Последнее редактирование: Сентябрь 27, 2015, 17:37:39 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #17 : Сентябрь 28, 2015, 09:38:18 »
sfs,
спасибо за разъяснения..сейчас пользуюсь nemo. Для немо скрипт закинул в /home/user/.local/share/nemo/scripts (если нет папки "scripts", то создать).
Далее, скрипт работает только непосредственно с каталогом в котором идут svg файлы. То есть, переконвертировать пак иконок одним махом с подкаталогами (zoncolor/scalable/actions/имя файла.svg) не получится, нужно зайти непосредственно в actions и оттуда уже через контекстное меню запускать скрипт.
В тунаре используется команда в одну строку, там немного другая история...пока не проверял.

Не очень понял, какую задачу Вы решаете
Вроде во всех граф. редакторах есть batch конвертация
Мне проще работать с контекстным меню файлового менеджера поэтому и пытаюсь, по возможности, использовать что-то вроде таких скриптов, кроме того у librsvg2-bin есть свои преимущества перед другими средствами обработки пакетной графики.

Спасибо участникам форума sfsek-nfn за отклик, поддержку и советы.

Оффлайн sfs

  • Местный
  • *****
  • Сообщений: 700
    • PuppyRus-Arch

Оффлайн artec

  • Новичок
  • **
  • Автор темы
  • Сообщений: 33
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #19 : Сентябрь 28, 2015, 10:30:15 »
http://zenway.ru/page/bir
Спасибо, возьму на заметку, для не векторной графики интересный инструмент..

Оффлайн sfs

  • Местный
  • *****
  • Сообщений: 700
    • PuppyRus-Arch
Re: librsvg2-bin как конвертор изображений svg/png
« Ответ #20 : Сентябрь 28, 2015, 10:33:35 »
Да - с svg bir, похоже, не работает