Прозрачный шаблон в Image Magick создает разбитый шаблон - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь создать изображение с фоном и рисунком, как в это изображение .

В настоящее время у меня есть эта команда

magick convert \
    \( \
        -size 512x512 \
        -define "gradient:vector=0,0 0,720" "gradient:#5DA2C2-#C70AA0" \
    \) \
    \( \
        -size 4x4 xc:white -alpha transparent \
        -channel alpha -fx "(1-min(1,(j+1)%2)) * 0.1" \
        -write mpr:lines1 +delete -size 512x512 tile:mpr:lines1 \
    \) -composite \
    \( \
        -size 4x4 xc:white -alpha transparent \
        -channel alpha -fx "(1-min(1,j%4)) * 0.25" \
        -write mpr:lines2 +delete -size 512x512 tile:mpr:lines2 \
    \) -composite \
    wallpaper.png

, что дает это . Вы можете видеть, что паттерн сломан (особенно внизу).

Если я установлю размер шаблона на 64x64, проблема исчезнет, ​​но это не реальное решение.

Что я делаю не так и как я могу это исправить, не меняя размер шаблона?

UPD:

Полный magick --version (convert --version) вывод:

Version: ImageMagick 7.0.8-23 Q16 x86_64 2019-01-04 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenCL OpenMP 
Delegates (built-in): bzlib cairo fontconfig freetype gslib heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png ps raw rsvg tiff webp wmf x xml zlib

Линии всегда появляются в одних и тех же местах от бега к бегу

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

В качестве теста попробуйте сохранить в формате TIFF, а не в формате PNG. Это работает или нет?

Изменение формата вывода всегда дает одинаковый результат. Я попробовал TIFF, GIF, JPEG. (С jpeg эти линии немного размыты, но результат выглядит примерно так же). Это также относится к варианту команды fmw42.

У вас установлен OpenMP с ImageMagick. Также отключите OpenCL и посмотрите, поможет ли это.

OpenMP не установлен, но поддерживается версией IM, которая у меня есть. Отключение OpenCL через переменную окружения MAGICK_OCL_DEVICE=OFF не меняет результат. Перекомпилированный IM с и без OpenCL и OpenMP из tag = 7.0.8-23 и из master - все то же самое ...

Видите ли вы в tmp4.png что-то, что мне не видно?

Да, я все еще вижу эту радужную линию на белом фоне, если я вижу magick tmp4.png -alpha remove tmp4-opaque.png

1 Ответ

0 голосов
/ 09 января 2019

Ваша команда отлично работает для меня на ImageMagick 7.0.8.23 Q16 Mac OSX с libpng 1.6.35. Но в IM 7 используйте магию, не конвертируйте магию и не конвертируйте, иначе вы получите поведение IM 6. Проверьте вашу версию libpng и обновите при необходимости. Какая у вас версия и дата ImageMagick и на какой платформе?

magick \
\( \
-size 512x512 \
-define gradient:vector="0,0 0,720" gradient:"#5DA2C2-#C70AA0" +write tmp1.png \
\) \
\( \
-size 4x4 xc:white -alpha transparent +write tmp2.png \
-channel alpha -fx "(1-min(1,(j+1)%2)) * 0.1" +write tmp3.png \
-write mpr:lines1 +delete -size 512x512 tile:mpr:lines1 +write tmp4.png  \
\) -composite \
\( \
-size 4x4 xc:white -alpha transparent \
-channel alpha -fx "(1-min(1,j%4)) * 0.25" \
-write mpr:lines2 +delete -size 512x512 tile:mpr:lines2 \
\) -composite \
wallpaper.png


enter image description here

Проверьте это и посмотрите, есть ли у вас такая же проблема. Но я не вижу никаких ломаных линий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...