[scribus] Scripting expert needed to speed up colour palette conversion

José Antonio Rocha joseantoniorocha at gmail.com
Sun Apr 7 20:50:02 UTC 2013


Simplifying a bit:

                    else:
                        rgb = scribus.getColorAsRGB(colorName)
                        r = rgb[0]
                        ra = "R"+str(r)
                        g = rgb[1]
                        ga = "G"+str(g)
                        b = rgb[2]
                        ba = "B"+str(b)
                        newColorName = ra+"/"+ga+"/"+ba
                        cmyk = scribus.getColor(colorName)
                        c = cmyk[0]
                        m = cmyk[1]
                        y = cmyk[2]
                        k = cmyk[3]
                        scribus.defineColor(newColorName,c,m,y,k)



2013/4/7 José Antonio Rocha <joseantoniorocha at gmail.com>

>
> 2013/4/7 "Christoph Schäfer" <christoph-schaefer at gmx.de>
>
>> Hi José,
>>
>> Thanks for your effort. Do you think yould also create an extended
>> version of the script that allows for conversion of every Scribus-style
>> import of non-spot colours (e.g. "FromWMF#b8bbab") to something meaningful,
>> so the previously mentioned letter-hex combination becomes
>> "R184/G187/B171"? Such a script would be well worth including in 1.4.3 and
>> 1.5.0.
>>
>> Required funtions:
>>
>> - Remove "From[Filetype -- see list of supported formats in the File >
>> Open and File > Import > Get Vector File]".
>>
>> - Determine the colour space via length of the hex value
>>
>> - Replace the hex value with decimal values and colour channels divided
>> by slashes: R5/G116/B20, C5/M30/Y40/K10
>>
>> Cheers,
>>
>> Christoph
>>
>
> Hi, Christoph!
>
> Here is it. But, as there's not a "defineColorAsRGB()" function in
> Scripter, the RGB colors are created as CMYK anyway, although have RGB
> names.
>
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
>
> import sys
>
> try:
>     import scribus
> except ImportError,err:
>     print "This Python script is written for the Scribus scripting
> interface."
>     print "It can only be run from within Scribus."
>     sys.exit(1)
>
> def main(argv):
>     """Translate imported RGB colors to CMYK colors."""
>     if scribus.haveDoc():
>         colorsList = scribus.getColorNames()
>         newColorName = ""
>         for colorName in colorsList:
>             if colorName.find("From") == 0:
>                 if not scribus.isSpotColor(colorName):
>                     colorCode = colorName.split("#")[1]
>                     if len(colorCode) > 6:
>                         cmyk = scribus.getColor(colorName)
>                         c = cmyk[0]
>                         cd = c*100/255
>
>                         ca = "C"+str(cd)
>                         m = cmyk[1]
>                         md = m*100/255
>
>                         ma = "M"+str(md)
>                         y = cmyk[2]
>                          yd = y*100/255
>
>                         ya = "Y"+str(yd)
>                         k = cmyk[3]
>                         kd = k*100/255
>                         ka = "K"+str(kd)
>                         newColorName = ca+"/"+ma+"/"+ya+"/"+ka
>                         scribus.defineColor(newColorName,c,m,y,k)
>                     else:
>                         rgb = scribus.getColorAsRGB(colorName)
>                         r = rgb[0]
>                         ra = "R"+str(r)
>                         g = rgb[1]
>                         ga = "G"+str(g)
>                         b = rgb[2]
>                         ba = "B"+str(b)
>                         newColorName = ra+"/"+ga+"/"+ba
>                         cmyk = scribus.getColor(colorName)
>                         c = cmyk[0]
>                         cd = c*100/255
>                         m = cmyk[1]
>                         md = m*100/255
>                         y = cmyk[2]
>                         k = cmyk[3]
>                         kd = k*100/255
>                         scribus.defineColor(newColorName,c,m,y,k)
>                     scribus.replaceColor(colorName,newColorName)
>
> scribus.deleteColor(colorName,newColorName)
>
> def main_wrapper(argv):
>     """The main_wrapper() function."""
>     try:
>         scribus.statusMessage("Running script...")
>         scribus.progressReset()
>         main(argv)
>     finally:
>         if scribus.haveDoc():
>             scribus.setRedraw(True)
>         scribus.statusMessage("")
>         scribus.progressReset()
>
> if __name__ == '__main__':
>     main_wrapper(sys.argv)
>
>
>
> --
> [image: Meira]
> ------------------------------
> nome: "José Antonio Meira da Rocha"
> googletalk: email: MSN: joseantoniorocha at gmail.com
> veículo: [ http://meiradarocha.jor.br ]
> fones: 55-8411-3047 / 55-3744-2994
> ------------------------------
>



-- 
[image: Meira]
------------------------------
nome: "José Antonio Meira da Rocha"
googletalk: email: MSN: joseantoniorocha at gmail.com
veículo: [ http://meiradarocha.jor.br ]
fones: 55-8411-3047 / 55-3744-2994
------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scribus.net/pipermail/scribus/attachments/20130407/6c823842/attachment.html>


More information about the scribus mailing list