Exemple #1
0
def verticalFlip(image):
    outimage = Create.newImage(image[0], image[1], 0, image[2])
    for y in xrange(image[1]):
        ny = (image[1]-1) - y
        for x in xrange(image[0]):
            inew = arrayIndex2To1(x, ny, image[0], 3)
            iold = arrayIndex2To1(x, y, image[0], 3)
            outimage[iold] = image[inew][:]
    return outimage
Exemple #2
0
def overlay(under_image, over_image, x, y, combine=CombineFunctions.paint, cparams=[], ignorecolor=None):
    #print(under_image)
    for oy in xrange(over_image[1]):
        #if oy + y < 0: continue
        #if oy + y > under_image[1]-1: continue
        for ox in xrange(over_image[0]):
            #if ox + x < 0: continue
            #if ox + x > under_image[1]-1: continue
            ui = arrayIndex2To1(ox+x, oy+y, under_image[0], 3)
            oi = arrayIndex2To1(ox, oy, over_image[0], 3)
            #print(ignorecolor, over_image[oi])
            if over_image[oi] != ignorecolor: 
                under_image[ui] = combine(under_image[ui], over_image[oi], *cparams)
    return
Exemple #3
0
def getSubImage(image, x, y, width, height):
    outimage = Create.newImage(width, height, 0, image[2])
    oi = 3
    for ty in xrange(height):
        for tx in xrange(width):
            i = arrayIndex2To1(tx+x, ty+y, image[0], 3)
            outimage[oi] = image[i][:]
            oi += 1
    return outimage
Exemple #4
0
def invertImage(image, channels=None, minv=0, maxv=1.0):
    if channels is None:
        channels = []
        for i in xrange(image[2]):
            channels.append(i)
    for oy in xrange(image[1]):
        for ox in xrange(image[0]):
            i = arrayIndex2To1(ox, oy, image[0], 3)
            for ch in channels:
                image[i][ch] = (maxv-image[i][ch])+minv
    return
Exemple #5
0
def tileImage(imagepool, tile_map, colormap=None, tintcombine=CombineFunctions.multiply, tintcparams=[]):
    outimage = Create.newImage(tile_map[0]*imagepool[0][0], tile_map[1]*imagepool[0][1], initialcolor=0, channels=imagepool[0][2])
    for tmy in xrange(tile_map[1]):
        for tmx in xrange(tile_map[0]):
            i = arrayIndex2To1(tmx, tmy, tile_map[0], 3)
            if colormap != None:
                tile = clone(imagepool[tile_map[i][0]])
                Modify.applyColor(tile, colormap[i], tintcombine, tintcparams)
                Modify.overlay(outimage, tile,  tmx*imagepool[0][0], tmy*imagepool[0][1])
            else:
                Modify.overlay(outimage, imagepool[tile_map[i][0]], tmx*imagepool[0][0], tmy*imagepool[0][1])
    return outimage
Exemple #6
0
def normalize(image, minv, maxv, channels=None, sameinrange=True):
    if channels is None:
        channels = []
        for i in xrange(image[2]):
            channels.append(i)
    if sameinrange:
        inmin = ()
        inmax = None
        for oy in xrange(image[1]):
            for ox in xrange(image[0]):
                i = arrayIndex2To1(ox, oy, image[0], 3)
                for ch in channels:
                    if inmin > image[i][ch]: inmin = image[i][ch]
                    if inmax < image[i][ch]: inmax = image[i][ch]
        fmin = []
        fmax = []
        for t in xrange(len(channels)):
            fmin.append(inmin)
            fmax.append(inmax)
    else:
        inmin = []
        inmax = []
        for t in xrange(len(channels)):
            inmin.append(())
            inmax.append(None)
        for oy in xrange(image[1]):
            for ox in xrange(image[0]):
                i = arrayIndex2To1(ox, oy, image[0], 3)
                for i, ch in enumerate(channels):
                    if inmin[i] > image[i][ch]: inmin[i] = image[i][ch]
                    if inmax[i] < image[i][ch]: inmax[i] = image[i][ch]
        fmin = inmin
        fmax = inmax
    for oy in xrange(image[1]):
        for ox in xrange(image[0]):
            i = arrayIndex2To1(ox, oy, image[0], 3)
            for j, ch in enumerate(channels):
                image[i][j] = PyRange.rangeToRange(image[i][j], fmin[j], fmax[j], minv[j], maxv[j])
    return
Exemple #7
0
def shrinkImage(image, newwidth, newheight):
    xgridsize = int(image[0] / newwidth)
    ygridsize = int(image[1] / newheight)
    outimage = Create.newImage(newwidth, newheight, 0, image[2])
    t = []
    div = xgridsize*ygridsize
    for gy in xrange(newheight):
        for gx in xrange(newwidth):
            xstart = gx * xgridsize
            xend = xstart + xgridsize
            ystart = gy * ygridsize
            yend = ystart + ygridsize
            t = [0 for x in range(image[2])]
            for py in xrange(ystart, yend):
                for px in xrange(xstart, xend):
                    index = arrayIndex2To1(px, py, image[0], 3)
                    for i, c in enumerate(image[index]):
                        t[i] += c
            for i in range(len(t)):
                t[i] /= div
            nindex = arrayIndex2To1(gx, gy, newwidth, 3)
            outimage[nindex] = t[:]
    return outimage
Exemple #8
0
def getColorAt(image, x, y):
    i = arrayIndex2To1(x, y, image[0], 3)
    return image[i]