воскресенье, 20 марта 2011 г.

Вывод картинок (иконок) в конки

Рассмотрим способы вывода картинок (иконок) в классических конках и конках с использованием lua+cairo.

В конки можно вывести изображения только в формате png.

В классике все изображения можно вывести в виде прямоугольной картинки командой

${image ~/путь_до_изображения/название_изображения -p 200,6 -s 32x32}

image - команда вывода изображения
-p 200,6 - координаты по горизонтали и вертикали
-s 32х32 - размер выводимого изображения

Для вывода изображения с помощью lua+cairo необходимы несколько команд.

Создаем имидж изображения

image = cairo_image_surface_create_from_png ("путь_до_изображения/название)

путь до изображения должен быть полным

Определяем ширину и высоту картинки

w = cairo_image_surface_get_width (image)
h = cairo_image_surface_get_height (image)

Масштабируем изображение

cairo_scale (cr, 256 / w, 256 / h)

цифры 256 в данной команде - размер изображения который будет выведен в окно конки

Назначаем место, куда будет выведено изображение

cairo_set_source_surface (cr, image, 0, 0)

цифры 0, 0 - координаты по горизонтали и вертикали

Выводим изображение

cairo_paint (cr)

Закрываем вывод изображения

cairo_surface_destroy (image)

В отличии от классических конок, в которых возможен вывод только прямоугольных изображений, при помощи нескольких команд можно вывести изображение в виде круга, прямоугольника с закругленными углами и т.п.
Правда и в классических конках это возможно путем наложения маски, то есть второго изображения типа паспарту.

Пример вывода изображения в виде круга

cairo_arc (cr, x, e, radius, 0, 2 * math.pi)
cairo_clip (cr)
cairo_new_path (cr)

image = cairo_image_surface_create_from_png (cr, ("путь/изображение)
w = cairo_image_surface_get_width (image)
h = cairo_image_surface_get_height (image)

cairo_scale (cr, 256/w, 256/h)

cairo_set_source_surface (cr, image, 0, 0)
cairo_paint (cr)

cairo_surface_destroy (image)

Заменив команду рисования круга

cairo_arc (cr, x, y, radius, 0, 2 * math.pi)

на команду рисования любой фигуры можно вывести изображение любой формы.

5 комментариев:

  1. Нужно нарисовать длинный график и вывести по частям его(pdf А4), как предложишь это сделать?.

    ОтветитьУдалить
  2. Спасибо большое!
    Очень помогло.

    ОтветитьУдалить
  3. вопрос, ${image ~/путь_до_изображения/название_изображения -p 200,6 -s 32x32} ввел это, естественно указав путь размещение и размер, но картинка не вывелась, а вывелось image, не подскажешь что делать?

    ОтветитьУдалить
  4. аналогично... не выводит изображение, только надпись {image}

    ОтветитьУдалить
  5. Вывод изображений с conky первое путь без пробелов! второе формат png
    ошибки - неправильный путь или не полный не во всех строках кода принимается команда ${image} попробуйте строкой выше ниже
    и теперь пример
    ${image /home/username/.conky/name_folder/img/name.png -p 0,4 -s 50x46} проверяйте точность пути и пробелы

    ОтветитьУдалить