def CompileFlag(sourcepath, destFolder):
    if not destFolder: destFolder = "output/"
    filename = os.path.splitext(os.path.basename(sourcepath))[0]

    image = PythonMagick.Image(sourcepath)
    imagetype = image.type

    nonecolor = PythonMagick.Color(1 * MaxRGB, 0, 0, 255 * MaxRGB)
    canvas = PythonMagick.Image(PythonMagick.Geometry(128, 128), nonecolor)
    canvas.type = imagetype

    dropshadow = PythonMagick.Image(PythonMagick.Geometry(128, 128), nonecolor)
    dropshadow.type = imagetype

    image = PythonMagick.Image(sourcepath)
    image2 = PythonMagick.Image(sourcepath)
    #image2 = PythonMagick.Image(image2)
    #image2 = PythonMagick.Image( PythonMagick.Geometry( image.size().width(), image.size().height()), nonecolor )
    #image2.composite(image, PythonMagick.Geometry(0,0,0,0), op)

    #image.sample("115x73")
    image.transform("115x73")
    image.enhance()

    dropshadow.fillColor(PythonMagick.Color(0, 0, 0, 25 * MaxRGB))
    dropshadow.draw(
        PythonMagick.DrawableRectangle(
            (128 / 2) - (115 / 2) - 1, (128 / 2) - (73 / 2) - 1,
            (128 / 2) + (115 / 2) + 1, (128 / 2) + (73 / 2) + 1))
    dropshadow.blur(5, 5)

    x = int(128 / 2)
    y = int(128 / 2)
    #geom = PythonMagick.Geometry(int(128/2) - int(115/2), int(128/2) - int(73/2) , int(128/2) + int(115/2), int(128/2) + int(73/2))
    geom = PythonMagick.Geometry(0, 0,
                                 int(128 / 2) - int(115 / 2),
                                 int(128 / 2) - int(73 / 2))
    op = PythonMagick.CompositeOperator.OverCompositeOp
    dropshadow.composite(image, geom, op)
    dropshadow.type = imagetype

    dropshadow.write(destFolder + filename + ".dds")

    tiny = PythonMagick.Image(dropshadow)
    tiny.type = imagetype
    tiny.transform("24x24")
    #tiny.sample("!24x24")
    tiny.write(destFolder + "small/" + filename + ".dds")

    mapflag = PythonMagick.Image(PythonMagick.Geometry(256, 256), nonecolor)

    colourFrequencies = ColourSet(image2)
    sortedColours = [(k, colourFrequencies[k]) for k in sorted(
        colourFrequencies, key=colourFrequencies.get, reverse=True)]

    maxIntensity = 0
    minIntensity = 255
    for i in range(10):
        if i >= len(sortedColours): break
        sortedColour = sortedColours[i][0][1:-1].split(',')
        intensity = int(sortedColour[0]) + int(
            1.2 * float(sortedColour[1])) + int(0.5 * float(sortedColour[2]))
        if intensity > maxIntensity:
            maxIntensity = intensity
        if intensity < minIntensity:
            minIntensity = intensity

    for x in range(image2.size().width()):
        for y in range(image2.size().height()):
            c = ColourToRGBArray(image2.pixelColor(x, y))
            intensity = c[0] + (1.2 * float(c[1])) + (0.5 * float(c[2]))
            actualIntensity = (intensity - minIntensity) / (maxIntensity -
                                                            minIntensity)
            if (actualIntensity < 0.0):
                actualIntensity = 0
            elif (actualIntensity > 1.0):
                actualIntensity = 255 * MaxRGB
            else:
                actualIntensity = int(actualIntensity * 255 * MaxRGB)
            newColour = PythonMagick.Color(
                min(actualIntensity + MaxRGB, 255 * MaxRGB), actualIntensity,
                actualIntensity, 1 * MaxRGB)
            image2.pixelColor(x, y, newColour)

    #image2.sample("!186x118")
    image2.transform("186x118")

    dropshadow2 = PythonMagick.Image(PythonMagick.Geometry(256, 256),
                                     nonecolor)
    dropshadow2.type = imagetype
    dropshadow2.fillColor(PythonMagick.Color(0, 0, 0, 25 * MaxRGB))
    dropshadow2.draw(
        PythonMagick.DrawableRectangle(
            (256 / 2) - (186 / 2) - 1, (256 / 2) - (118 / 2) - 1,
            (256 / 2) + (186 / 2) + 1, (256 / 2) + (118 / 2) + 1))
    dropshadow2.blur(10, 10)

    x = int(256 / 2)
    y = int(256 / 2)
    geom = PythonMagick.Geometry(0, 0,
                                 int(256 / 2) - int(186 / 2),
                                 int(256 / 2) - int(118 / 2))
    op = PythonMagick.CompositeOperator.OverCompositeOp
    dropshadow2.composite(image2, geom, op)
    dropshadow2.type = imagetype

    dropshadow2.fillColor(PythonMagick.Color(0, 0, 0, 255 * MaxRGB))
    dropshadow2.strokeColor(
        PythonMagick.Color(255 * MaxRGB, 255 * MaxRGB, 255 * MaxRGB,
                           1 * MaxRGB))
    dropshadow2.strokeWidth(2)
    dropshadow2.draw(
        PythonMagick.DrawableRectangle(
            (256 / 2) - (186 / 2) - 1, (256 / 2) - (118 / 2) - 1,
            (256 / 2) + (186 / 2) + 1, (256 / 2) + (118 / 2) + 1))

    dropshadow2.write(destFolder + "map/" + filename + ".dds")
Пример #2
0
#! /usr/bin/env python3
# vim:ts=4:sw=4:ai:et:si:sts=4

import logging
import PythonMagick as Magick
import sys
import os

FORMAT = "%(asctime)s: %(name)s:%(lineno)d (%(threadName)s) - %(levelname)s - %(message)s"
logging.basicConfig(format=FORMAT)
logging.getLogger(None).setLevel(logging.INFO)
logging.captureWarnings(True)
logger = logging.getLogger(__name__)

rect = Magick.DrawableRectangle(0, 0, 1920, 1080)

for file_ in sys.argv[1:]:
    basedir = os.path.realpath(os.path.dirname(file_))
    outdir = os.path.join(basedir, "out")
    if not os.path.isdir(outdir):
        os.makedirs(outdir)
    basename = os.path.basename(file_)
    (basename, _) = os.path.splitext(basename)
    outfile = os.path.join(outdir, basename + ".png")

    logger.info("Processing %s" % file_)
    img = Magick.Image(file_)
    logger.info("From %s @ %sx%s" % (img.magick(), img.columns(), img.rows()))
    img.quality(100)
    img.magick('PNG')
    img.resize('1920x1080')