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, теперь прозрачный.