سؤال

لدي موقع متعدد اللغات و ضرورة أتمتة عملية تحديث textlayers في psd-ملفات csv المصدر.

أعلم أنه قد يكون هناك خلل في psp بسبب تغير الاعراض, ولكن على أي حال فإنه من شأنه أن يساعد كثيرا أن يكون النص داخل الوثائق.

ما هي الخيارات المتاحة ؟

تحرير:

Murmelschlurmel قد حل العاملة.هنا هو رابط Adobe الوثائق.

http://livedocs.adobe.com/en_US/Photoshop/10.0/help.html?content=WSfd1234e1c4b69f30ea53e41001031ab64-740d.html

تنسيق csv ملف ليست لطيفة جدا:تحتاج عمود لكل متغير.أتوقع صف واحد لكل متغير.

يعمل مع Umlaut (ä "حزب الله" إلخ)

تعديل 1:

حل آخر هو استخدام com لأتمتة فوتوشوب.هذا لطيف إذا كان لديك اثنين من قوالب (أزرار) التي تحتاج إلى تغيير النص.هنا هو بلدي النصي في بيثون التي قد تحصل startet.

تحتاج إلى أن يكون ملف excel مع الأعمدة:TemplateFileName, TargetFileName, TargetFormat النص (أي قالب.psd, button1 , gif , NiceButton) .الصف الأول من ورقة غير المستخدمة.Psp القالب يجب أن يكون لديك فقط 1 طبقة و لا يمكن أن يكون layergroups.

import win32com.client
import xlrd 
spreadsheet = xlrd.open_workbook("text_buttons.xls")
sheet = spreadsheet.sheet_by_index(0)

psApp = win32com.client.Dispatch("Photoshop.Application")  
jpgSaveOptions = win32com.client.Dispatch("Photoshop.JPEGSaveOptions")  
jpgSaveOptions.EmbedColorProfile = True
jpgSaveOptions.FormatOptions = 1
jpgSaveOptions.Matte = 1
jpgSaveOptions.Quality = 1

gifSaveOptions = win32com.client.Dispatch("Photoshop.GIFSaveOptions")



for rowIndex in range(sheet.nrows):
    if(rowIndex > 0):
        template =  sheet.row(rowIndex)[0].value
        targetFile = sheet.row(rowIndex)[1].value
        targetFileFormat = sheet.row(rowIndex)[2].value
        textTranslated = sheet.row(rowIndex)[3].value
        psApp.Open(r"D:\Design\Produktion\%s" % template ) 
        doc = psApp.Application.ActiveDocument

        for layer in doc.Layers:  
            if (layer.Kind == 2):
                layer.TextItem.Contents = textTranslated
                if(targetFileFormat == "gif"):
                    doc.SaveAs(r"D:\Design\Produktion\de\%s" % targetFile, gifSaveOptions,  True, 2)
                if(targetFileFormat == "jpg"):
                    doc.SaveAs(r"D:\Design\Produktion\de\%s" % targetFile, jpgSaveOptions,  True, 2)
هل كانت مفيدة؟

المحلول

يمكنك استخدام "البيانات مدفوعة تصميم" للقيام بذلك.وهناك أيضا مفهوم بيانات مدفوعة تصميم في علوم الكمبيوتر ، ولكن بقدر ما أستطيع أن أرى هذا ليس لا علاقة استخدام كلمة في فوتوشوب.

هنا هو كيفية المضي قدما:

تحميل الصور الخاصة بك في فوتوشوب و تحديد المتغيرات الخاصة بك مع صورة > متغير > تحديد.

ثم تحويل ملفات csv إلى تنسيق فوتوشوب يمكن قراءة.كان أفضل الخبرات مع علامة التبويب delimted النص.

أخيرا تحميل ملف النص في الفوتوشوب مع الصور > متغيرات > مجموعة البيانات والسماح فوتوشوب حفظ جميع التكرارات.

عندما حاولت هذا أولا ، وجدت أن Photoshop ملف المساعدة لم توفر ما يكفي من التفاصيل.بحثت في الإنترنت عن فوتوشوب "مجموعة البيانات" وجدت بعض البرامج التعليمية الجيدة مثلهذا واحد من digitaltutors.

نصائح أخرى

قد يكون قليلا أكثر من اللازم، ولكن لقد استخدمت الخادم أدوبي AlterCast / Grphics للتعامل مع نفسها بالضبط القضية.

وأيضا إذا به نص عادل GIF / JPG صورة، يمكنك استخدام بيثون + PIL (مكتبة التصوير بيثون). هنا هو نموذج التعليمات البرمجية (يعمل على نظام التشغيل ويندوز مع الخطوط Arial و أوساكا تثبيت).

#!/usr/bin/python
# -*- coding: utf-8 -*-
import ImageFont, ImageDraw, Image
#font = ImageFont.truetype("/usr/share/fonts/bitstream-vera/Vera.ttf", 24)
#font = ImageFont.truetype("futuratm.ttf", 18)
font = ImageFont.truetype("arial.ttf", 18)
im = Image.new("RGB", (365,20), "#fff")
draw = ImageDraw.Draw(im)
draw.text((0, 0), "Test Images", font=font, fill="#000")
im.save("TestImg_EN.gif", "GIF")


font = ImageFont.truetype("osaka.ttf", 18)
im = Image.new("RGB", (365,20), "#fff")
draw = ImageDraw.Draw(im)
draw.text((0, 0), u"テストイメージ", font=font, fill="#000")
im.save("TestImg_JP.gif", "GIF")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top