Работа с текстовыми слоями в Aspose.PSD для Python
Обзор
Обзор
Aspose.PSD для Python - это мощная библиотека, позволяющая работать с файлами PSD (документы Photoshop) в Python. Одной из ключевых функций этой библиотеки является возможность редактирования текстовых слоев в файлах PSD. В этой статье мы рассмотрим два различных способа редактирования текста в файлах PSD с использованием Aspose.PSD для Python - простой способ и более мощный способ с использованием частей текста.
Простой способ обновления текстового слоя Для обновления текстового слоя в файле PSD с использованием Aspose.PSD для Python вы можете использовать метод update_text класса TextLayer. Этот метод позволяет легко обновлять содержимое текстового слоя. Вот пример кода, демонстрирующий простой способ обновления текстового слоя:
source_file = "text212.psd" | |
output_file = "Output_text212.psd" | |
with PsdImage.load(source_file) as img: | |
image = cast(PsdImage, img) | |
simple_text = cast(TextLayer, image.layers[2]) | |
simple_text.update_text("Update", Color.red) | |
image.save(output_file) |
Редактирование с использованием частей текста
Более мощный способ обновления текстового слоя с использованием частей текста: Простой способ обновления текстовых слоев в файлах PSD подходит для базового редактирования текста. Однако, если вам нужно иметь больший контроль над стилями и форматированием текста, вы можете использовать более мощный метод с использованием частей текста. Части текста позволяют указывать различные стили и абзацы внутри текстового слоя. Вот пример кода, демонстрирующий этот метод:
text_layer = cast(TextLayer, image.layers[1]) | |
text_data = text_layer.text_data | |
default_style = text_data.produce_portion().style | |
default_paragraph = text_data.produce_portion().paragraph | |
default_style.fill_color = Color.from_name("DimGray") | |
default_style.font_size = 51 | |
text_data.items[1].style.strikethrough = True | |
new_portions = text_data.produce_portions( | |
[ | |
"E=mc", | |
"2\r", | |
"Bold", | |
"Italic\r", | |
"Lowercasetext" | |
], | |
default_style, | |
default_paragraph | |
) | |
new_portions[0].style.underline = True | |
new_portions[1].style.font_baseline = FontBaseline.SUPERSCRIPT | |
new_portions[2].style.faux_bold = True | |
new_portions[3].style.faux_italic = True | |
new_portions[3].style.baseline_shift = -25 | |
new_portions[4].style.font_caps = FontCaps.SMALL_CAPS | |
for new_portion in new_portions: | |
text_data.add_portion(new_portion) | |
text_data.update_layer_data() |
В приведенном выше коде мы сначала получаем доступ к текстовому слою, который мы хотим обновить (image.layers[1]). Затем мы извлекаем объект text_data из текстового слоя, что позволяет нам работать с текстовыми частями. Мы создаем объект default_style и default_paragraph, которые будут использоваться в качестве стиля и абзаца по умолчанию для текстовых частей.
Затем мы определяем текстовые части, которые мы хотим добавить в текстовый слой. Каждая часть представляет собой сегмент текста с собственным стилем и форматированием. В этом примере у нас есть пять текстовых частей - “E=mc”, “2\r”, “Bold”, “Italic\r” и “Lowercasetext”. Мы также обновляем стили этих частей в соответствии с нашими потребностями.
Затем мы перебираем новые части и добавляем их в объект text_data с помощью метода add_portion. Наконец, мы вызываем метод update_layer_data объекта text_data для обновления текстового слоя новыми частями текста.
Заключение Aspose.PSD для Python предоставляет мощные возможности для редактирования текста в файлах PSD. Чтобы обновить содержимое текстового слоя или применить более продвинутые стили и форматирование, Aspose.PSD для Python имеет вас в виду. Используя простой способ или более мощный способ с использованием частей текста, вы легко можете управлять текстовыми слоями в ваших файлах PSD.
Пожалуйста, проверьте полный пример.
Пример
from aspose.psd import Color | |
from aspose.psd.fileformats.psd import PsdImage, FontBaseline, FontCaps | |
from aspose.psd.fileformats.psd.layers import TextLayer | |
from aspose.pycore import cast | |
def TextLayerUpdatingTest(): | |
source_file = "text212.psd" | |
output_file = "Output_text212.psd" | |
with PsdImage.load(source_file) as img: | |
image = cast(PsdImage, img) | |
# Smple way to update text layer | |
simple_text = cast(TextLayer, image.layers[2]) | |
simple_text.update_text("Update", Color.red) | |
# More powerful way to updateText Layer - using Text Portions with different styles and paragraphs | |
text_layer = cast(TextLayer, image.layers[1]) | |
text_data = text_layer.text_data | |
default_style = text_data.produce_portion().style | |
default_paragraph = text_data.produce_portion().paragraph | |
default_style.fill_color = Color.from_name("DimGray") | |
default_style.font_size = 51 | |
text_data.items[1].style.strikethrough = True | |
new_portions = text_data.produce_portions( | |
[ | |
"E=mc", | |
"2\r", | |
"Bold", | |
"Italic\r", | |
"Lowercasetext" | |
], | |
default_style, | |
default_paragraph | |
) | |
new_portions[0].style.underline = True # edit text style "E=mc" | |
new_portions[1].style.font_baseline = FontBaseline.SUPERSCRIPT # edit text style "2\r" | |
new_portions[2].style.faux_bold = True # edit text style "Bold" | |
new_portions[3].style.faux_italic = True # edit text style "Italic\r" | |
new_portions[3].style.baseline_shift = -25 # edit text style "Italic\r" | |
new_portions[4].style.font_caps = FontCaps.SMALL_CAPS # edit text style "Lowercasetext" | |
for new_portion in new_portions: | |
text_data.add_portion(new_portion) | |
text_data.update_layer_data() | |
image.save(output_file) |