Робота з текстовими шарами в 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”, “Жирний”, “Курсив\r”, та “Малий текст”. Ми також оновлюємо стилі цих частин згідно з нашими вимогами.

Потім ми ітеруємо по новим частинам та додаємо їх до об’єкту 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)