Форум сообщества Runtu.org
Август 16, 2018, 20:51:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Новости: Доступна для загрузки х64 версия дистрибутива Runtu LITE 18.04.1 - 20180801

Подробнее
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 2 Все   Вниз
  Печать  
Автор Тема: librsvg2-bin как конвертор изображений svg/png  (Прочитано 14578 раз)
0 Пользователей и 1 Гость смотрят эту тему.
artec
Новичок
**
Offline Offline

Сообщений: 33


« : Сентябрь 25, 2015, 16:04:02 »

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

Сообщений: 622


WWW
« Ответ #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
Новичок
**
Offline Offline

Сообщений: 33


« Ответ #2 : Сентябрь 25, 2015, 18:06:36 »

sfs, спасибо большое...если ещё подскажите как этот скрипт сделать для контекстного меню в тунар и nemo, то будет совсем замечательно Улыбающийся.
Записан
ek-nfn
Местный
*****
Online Online

Сообщений: 1143


« Ответ #3 : Сентябрь 25, 2015, 19:22:21 »

ещё подскажите как этот скрипт сделать для контекстного меню в тунар

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

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

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

« Последнее редактирование: Сентябрь 25, 2015, 19:26:29 от ek-nfn » Записан
artec
Новичок
**
Offline Offline

Сообщений: 33


« Ответ #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
Местный
*****
Online Online

Сообщений: 1143


« Ответ #5 : Сентябрь 25, 2015, 20:40:39 »

все правильно.  для терминала переменную $1 необходимо заменить на реальный путь к каталогу с файлами  svg
« Последнее редактирование: Сентябрь 25, 2015, 20:48:30 от ek-nfn » Записан
artec
Новичок
**
Offline Offline

Сообщений: 33


« Ответ #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
Местный
*****
Online Online

Сообщений: 1143


« Ответ #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 » Записан
artec
Новичок
**
Offline Offline

Сообщений: 33


« Ответ #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
Местный
*****
Online Online

Сообщений: 1143


« Ответ #9 : Сентябрь 25, 2015, 22:15:59 »

Что имеется в виду под фразой теперь исчезли правильные расширения ?

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

« Последнее редактирование: Сентябрь 25, 2015, 22:31:38 от ek-nfn » Записан
artec
Новичок
**
Offline Offline

Сообщений: 33


« Ответ #10 : Сентябрь 25, 2015, 22:24:49 »

В смысле когда были дубли, то то были и значки в формате "название.png". Сейчас только остались дубли в формате "название.svg.png"...в принципе наверное не суть, пойдёт и так пока..
Записан
ek-nfn
Местный
*****
Online Online

Сообщений: 1143


« Ответ #11 : Сентябрь 25, 2015, 22:28:49 »

то есть, исходные файлы заменило иконками ?
Записан
artec
Новичок
**
Offline Offline

Сообщений: 33


« Ответ #12 : Сентябрь 25, 2015, 22:35:01 »

Нет, кстати файлы создаются на директорию выше. Просто при предыдущей команде создавалось  2 вида иконок с разными расширениями (svg.svg.png и png), а теперь только один вид (svg.png).
« Последнее редактирование: Сентябрь 25, 2015, 22:51:05 от artec » Записан
ek-nfn
Местный
*****
Online Online

Сообщений: 1143


« Ответ #13 : Сентябрь 25, 2015, 22:40:16 »

Вы писали , что дубль пишется в таком формате -  "название значка.svg.svg.png"

Пока верните как было. Sfs поправит скрипт для удаления дублей
Записан
artec
Новичок
**
Offline Offline

Сообщений: 33


« Ответ #14 : Сентябрь 25, 2015, 22:50:08 »

Всё верно, я немного напутал в предыдущем сообщении. Были иконки в формате "название значка.svg.svg.png" и просто "название значка.png", а теперь только в формате "название значка.svg.png".
« Последнее редактирование: Сентябрь 25, 2015, 22:51:58 от artec » Записан
sfs
Местный
*****
Offline Offline

Сообщений: 622


WWW
« Ответ #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
Местный
*****
Online Online

Сообщений: 1143


« Ответ #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 » Записан
artec
Новичок
**
Offline Offline

Сообщений: 33


« Ответ #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
Местный
*****
Offline Offline

Сообщений: 622


WWW
« Ответ #18 : Сентябрь 28, 2015, 10:17:58 »

http://zenway.ru/page/bir
Записан

artec
Новичок
**
Offline Offline

Сообщений: 33


« Ответ #19 : Сентябрь 28, 2015, 10:30:15 »

Спасибо, возьму на заметку, для не векторной графики интересный инструмент..
Записан
sfs
Местный
*****
Offline Offline

Сообщений: 622


WWW
« Ответ #20 : Сентябрь 28, 2015, 10:33:35 »

Да - с svg bir, похоже, не работает
Записан

Страниц: 1 2 Все   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Valid XHTML 1.0! Valid CSS!