Matlab: сохранить фигуру с прозрачным фоном
У меня есть сюжет, и я устанавливаю фон прозрачным:
set(gcf, 'Color', 'None');
set(gca, 'Color', 'None');
Когда я пытаюсь сохранить изображение (из программы просмотра), я сохраняю его как .png, но он сохраняет на белом фоне. Как я могу сохранить его с прозрачным фоном?
Спасибо
Ответы
Ответ 1
Неутешительно, но команды MATLAB по умолчанию saveas
и print
не могут справиться с прозрачными вещами очень хорошо. Вам нужно будет сохранить его с некоторым фоном, а затем преобразовать его либо через imread
/imwrite
, либо какой-либо другой инструмент.
Есть некоторые инструменты, которые могут быть полезны:
Я предпочитаю векторную графику, поэтому используйте svg export, когда требуется прозрачность. Если у вас есть растровое изображение, используйте imwrite(bitmapData, 'a.png', 'png', 'transparency', backgroundColor)
.
Ответ 2
С момента выпуска MATLAB 2014b все изменилось. Недавно реализованная графическая система (так называемая HG2 для Handle Graphics версии 2) делает гораздо лучше с точки зрения прозрачности.
Теперь он сохраняет прозрачность корректно SVG как минимум!
Ответ 3
Так что я все еще хотел чего-то простого, что не требовал, чтобы я установил что-нибудь еще (корпоративный ПК не разрешен:/). Я наткнулся на эту ссылку, указав:
Все, что вам нужно сделать, это следующее
1) В файле Matlab добавьте команды для форматирования фигуры с прозрачным фоном
set(gcf, 'color', 'none');
set(gca, 'color', 'none');
и сохранить или экспортировать фигуру, созданную в формате eps. (скажем, Bspline.eps)
2) Откройте Bspline.eps в NotePad
3) Посмотрите на первую строку. Например %!PS-Adobe-3.0 EPSF-3.0
. Последнее число 3.0 указывает уровень Postscript. Для уровня 3 найдите строку rf
. Вы найдете в одной строке, подобной этой (четыре числа, за которыми следует rf
)
0 0 3025 2593 rf% Прокомментируйте эту строку, используя%.
(Для поиска уровня 2 для строки pr
вместо rf
)
Сохраните файл.
Теперь вы можете использовать файл eps или можете преобразовать его в pdf, а затем использовать.
Во всяком случае, он будет иметь прозрачный фон
Extra
Для меня это были две строки с re
и две строки, несмотря на то, что я имел %!PS-Adobe-3.0 EPSF-3.0
сразу после друг друга. Но результатом стал Figure
, теперь прозрачный.