Искажение Python ImageMagick Шепард

В настоящее время я пишу сценарий для отображения изображения на кружку в целях макета. Вся идея состоит в том, чтобы убрать зависимость от Photoshop, чтобы мы могли полностью автоматизировать этот процесс. Однако из-за формы кружки изображения должны быть деформированы, чтобы выглядеть правильно.
Я быстро посмотрел в Интернете, и я нашел эту статью на эту тему, и она действительно не слишком удобна для учащихся. Я получил все координаты, которые, я думаю, мне нужны, чтобы это работало, я просто не очень уверен в том, как вводить данные.
Я выложил свой код таким образом, чтобы мне было легче получить к нему доступ (по крайней мере, в моем уме) и изменить его по своей прихоти. Тем не менее, я не могу понять, как на самом деле использовать искажение Шепарда через ImageMagick. Я попытался импортировать короткий список вариантов ImageMagick и MagickWand, но все они возвращают "ImportError: No Module named x", что является первой проблемой. Как только я преодолею этот момент, я даже не уверен, что мой код будет работать. Если кто-то может указать мне правильное направление, я был бы очень признателен.

MUG_SIDE = [[428,615,1221,1609],[".../mug-side.png"],[[0,0,499,44],[2100,0,2098,390],[4200,0,3784,175],[0,4800,606,3911],[2100,4800,2112,4347],[4200,4800,3720,4095]]]
MUG_FRONT = [[574,397,1557,1518],[".../mug-front.png"],[[0,0,37,62],[4200,0,3642,28],[0,4800,30,4744],[4200,4800,3670,4686]]]
MUG_MAIN = [[968,1052,968,1716],[".../mug-main.png"],[[0,0,360,774],[4200,0,2720,0],[0,4800,605,4539],[4200,4800,2860,3494]]]
MUGS = [MUG_SIDE,MUG_FRONT,MUG_MAIN]
i = 0
for item in MUGS:
    coor = []
    for coor_set in item[2]:
        for item in coor_set:
            coor += item
    print coor
    file = cStringIO.StringIO(urllib.urlopen(item[1]).read())
    mug_overlay = Image.open(item[1]).convert("RGBA")
    canvas = Image.new('RGB', (2000,2000), (255,255,255))

    ShepardsDistortion = DistortImageMethod(14)
    MagickWandGenesis()
    wand = NewMagickWand()
    MagickReadImage(wand,file)
    MagickDistortImage(wand,ShepardsDistortion, len(coor), coor, False)
    #RESIZE IMAGE HERE, PRE-SAVING
    MagickWriteImage(wand,location+"mug_warp_temp.png")

    design_warped = Image.open(location+"mug_warp_temp.png").convert("RGBA")
    width = item[0][2] - item[0][0]
    height = item[0][3] - item[0][1]

    design_warped = design_warped.resize( (width,height), Image.ANTIALIAS)
    #replace later

    canvas.paste(design_warped, (item[0][0],item[0][1]), mask=design_warped)
    canvas.paste(mug_overlay, mask=mug_overlay)
    if item[1][-8:] == "main.png":
        print "paste corner art"
    canvas.save(location+"mugtest_"+i+".png")
    i=i+1

Излишне говорить, что если есть более простой способ согнуть изображение вокруг цилиндра с помощью скрипта Python, это тоже будет круто.:п

0 ответов

Другие вопросы по тегам