Настройка фона - параметры обрезки

При установке обоев вы можете выбрать из плитки , зума , центра , масштаба , заливки или диапазон вариантов. Что они означают?

Чем опция масштабировать отличается от zoom и span ? Я не вижу разницы ни на одном из обоев.

4
задан 8 December 2012 в 19:35

3 ответа

Из моих наблюдений на нескольких изображениях:

  • Центр: помещает изображение в центр рабочего стола, сохраняя его первоначальный размер.
  • Плитка: мозаичное изображение, как плитка на полу, с сохранением исходного размера изображения.
  • Заполнить: растягивает (или уменьшает) изображение, чтобы соответствовать экрану, но не заботится о сохранении пропорций.
  • Zoom: растягивает (или уменьшает) изображение, сохраняя пропорции, так что фон полностью заполняется. Когда изображение и экран имеют разные пропорции, это обрезает лишние полосы, которые невозможно установить (верх и низ или левый и правый в зависимости от изображения).
  • Масштаб: также растягивает (или уменьшает) изображение, сохраняя пропорции, но следит за тем, чтобы изображение полностью помещалось в области экрана. Когда изображение и экран имеют разные пропорции, это позволяет создавать пустые полосы по бокам (опять же, сверху и снизу или слева и справа в зависимости от изображения).
  • Спан: понятия не имею. Похоже на шкалу. Я полагаю, что Coteyr имеет это право, и что он делает то же самое, что и Scale, но для нескольких экранов.
0
ответ дан 8 December 2012 в 19:35

Это будет сложно увидеть, но ...

  • Плитка - мозаичное изображение, как плитка на полу, попробуйте действительно маленькие изображения, например 100x100. см. Примеры
  • Масштаб - увеличение изображения таким образом, что наибольшее измерение теперь является самым большим измерением рабочего стола. Например, изображение размером 200x100 на рабочем столе 800x600 будет увеличено до 800x400, оставляя 200px свободного пространства.
  • Fill - в основном «масштабируется» до ширины вашего монитора. Игнорирование высоты. поэтому, если у вас есть разрешение 1000x1000 и изображение 600x500, изображение будет масштабировано до 1200x1000 и отцентрировано, немного обрезая верх и низ.
  • Span - похож на Scale, но на нескольких мониторах. Таким образом, если у вас есть 2 800x600s и изображение 1600x600, вы можете «размазать» его по обоим мониторам
  • Center - для изображений меньшего размера (хотя и большего размера), которые помещают изображение в центр одного монитора. [ 115]
  • Масштаб - «изменяет размеры» изображения. Делая его точно такого же размера, как ваш рабочий стол. Таким образом, рабочий стол 800x600 «масштабирует» изображение 900x200 до точного 800x600, и искажение будет проклято.

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

0
ответ дан 8 December 2012 в 19:35

Чтобы понять тонкости различных доступных опций, стоит просто немного покопаться в исходном коде, чтобы увидеть, что происходит с каждой опцией. Я постараюсь изо всех сил выразить это просто, насколько это возможно, но с оговоркой - вам нужно немного математики!

Давайте возьмем исходный код:

 apt-get source gnome-desktop3
 cd gnome-desktop*
 cd libgnome-desktop

Теперь откройте следующий исходный модуль с вашим любимым текстовым редактором:

 gedit gnome-bg.c

Есть две ключевые функции для изучения:

get_scaled_pixbuf


switch (placement) {
    case G_DESKTOP_BACKGROUND_STYLE_SPANNED:
                new = pixbuf_scale_to_fit (pixbuf, width, height);
        break;
    case G_DESKTOP_BACKGROUND_STYLE_ZOOM:
        new = pixbuf_scale_to_min (pixbuf, width, height);
        break;

    case G_DESKTOP_BACKGROUND_STYLE_STRETCHED:
        new = gdk_pixbuf_scale_simple (pixbuf, width, height,
                           GDK_INTERP_BILINEAR);
        break;

    case G_DESKTOP_BACKGROUND_STYLE_SCALED:
        new = pixbuf_scale_to_fit (pixbuf, width, height);
        break;

    case G_DESKTOP_BACKGROUND_STYLE_CENTERED:
    case G_DESKTOP_BACKGROUND_STYLE_WALLPAPER:
    default:
        new = pixbuf_clip_to_fit (pixbuf, width, height);
        break;
    }

[ 1136] и функции:

draw_image_area


switch (bg->placement) {
    case G_DESKTOP_BACKGROUND_STYLE_WALLPAPER:
        pixbuf_tile (scaled, dest);
        break;
    case G_DESKTOP_BACKGROUND_STYLE_ZOOM:
    case G_DESKTOP_BACKGROUND_STYLE_CENTERED:
    case G_DESKTOP_BACKGROUND_STYLE_STRETCHED:
    case G_DESKTOP_BACKGROUND_STYLE_SCALED:
        pixbuf_blend (scaled, dest, 0, 0, w, h, x + area->x, y + area->y, 1.0);
        break;
    case G_DESKTOP_BACKGROUND_STYLE_SPANNED:
        pixbuf_blend (scaled, dest, 0, 0, w, h, x, y, 1.0);
        break;
    default:
        g_assert_not_reached ();
        break;
    }

  • Давайте сначала посмотрим на опцию SPAN

Это описывается опцией case G_DESKTOP_BACKGROUND_STYLE_SPANNED

Обои (pixbuf) сначала масштабируются до области, которую нужно заполнить (pixbuf_scale_to_fit), т.е. берут исходные обои и увеличивают их ширину и высоту, чтобы соответствовать площадь.

Для расширения используется следующий алгоритм:

factor = MIN (max_width  / src_width, max_height / src_height);
new_width  = floor (src_width * factor + 0.5);
new_height = floor (src_height * factor + 0.5);

src_ - ширина или высота размера обоев, тогда как max_ - размер области ширина или высота

Довольно сложный алгоритм, как вы можете видеть, но в основном он пытается выяснить, какое минимальное измерение необходимо расширить, прежде чем линейно масштабировать оба измерения на тот же коэффициент, который он рассчитал.

Эта область является объединенной областью вашего монитора или мониторов.

Полученные обои (pixbuf) затем смешиваются с цветом фона рабочего стола для всей области.

  • Давайте рассмотрим опцию SCALE

Это описывается опцией case G_DESKTOP_BACKGROUND_STYLE_SCALED

Как вы можете видеть в источнике код, он очень похож на SPAN . Он использует тот же алгоритм для масштабирования изображения, что и SPAN .

Полученные обои (pixbuf) затем смешиваются с цветом фона рабочего стола для области портов просмотра, то есть не объединенной области всех мониторов, а области каждого монитора в отдельности.

  • Давайте посмотрим на опцию Zoom

Это описывается опцией случая G_DESKTOP_BACKGROUND_ZOOM

Обои (pixbuf) являются первыми масштабируется до области, которую нужно заполнить (pixbuf_scale_to_min), т.е. возьмите оригинальные обои и увеличьте их ширину и высоту, чтобы соответствовать области.

Для расширения используется следующий алгоритм:

factor = MAX (min_width / src_width, min_height / src_height);

new_width = floor (src_width * factor + 0.5);
new_height = floor (src_height * factor + 0.5);

src_ - ширина или высота размера обоев, тогда как max_ - размер области ширина или высота *

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

Полученные обои (pixbuf) затем смешиваются с цветом фона рабочего стола для области порта просмотра, то есть не объединенной области всех мониторов, а области каждого монитора в отдельности.

  • Давайте рассмотрим опцию STRETCH

Это описывается опцией случая G_DESKTOP_BACKGROUND_STRETCHED

Обои (pixbuf) раскрываются как по ширине, так и по высоте к области - таким образом, вы можете получить искажение, если ваши обои не соответствуют точным размерам обоев

Полученные обои (pixbuf) затем смешиваются с цветом фона рабочего стола для площадь порта просмотра, т.е. не объединенная область всех мониторов, а область каждого монитора в отдельности.

  • Давайте посмотрим на опцию CENTER

Это описывается опцией случая G_DESKTOP_BACKGROUND_CENTRED

Обои (pixbuf) на самом деле обрезается до размера, если он слишком велик, чтобы соответствовать области, то есть ширина уменьшается до ширины области, а высота уменьшается до высоты области.

Полученные обои (pixbuf) затем смешиваются с цветом фона рабочего стола для области порта просмотра, то есть не объединенной области всех мониторов, а области каждого монитора в отдельности. Полученное изображение затем выводится в центр общей области монитора.

  • Давайте рассмотрим опцию TILE

Это описывается опцией случая G_DESKTOP_BACKGROUND_WALLPAPER

Обои (pixbuf) аналогичны обрезается как опция Center .

Полученные обои (pixbuf) затем смешиваются с цветом фона рабочего стола для области порта просмотра, то есть не объединенной области всех мониторов, а области каждого монитора в отдельности. Полученное изображение копируется многократно, начиная с одного угла, заполняя общую область каждым изображением, то есть по ширине и по высоте.

0
ответ дан 8 December 2012 в 19:35

Другие вопросы по тегам:

Похожие вопросы: