import numpy import StringIO from PIL import Image from scipy import misc width = 256 height = 256 depth = 256 slicesX = 10 slicesY = 10 dataset = 'heart' ext = '.png' filepath = dataset + '_256x256x256.raw' original = numpy.fromfile(filepath, dtype=numpy.uint8) original = numpy.reshape(original, (width, height, depth)) for i in range(100,201): slice = original[i] misc.imsave(dataset + '/img'+ str(i-100+1) +ext, slice) resultImg = Image.new('L', (width*slicesX, height*slicesY)) # read files 1 by 1 from dir for tileIdx in range(0,100): tileName = dataset + '/img'+ str(tileIdx+1) +ext #print tileName tileImg = Image.open(tileName) tileIdxX = tileIdx % slicesX tileIdxY = tileIdx / slicesY for tileX in range(0, width): for tileY in range(0, height): imgX = width * tileIdxX + tileX imgY = height * tileIdxY + tileY pixel = tileImg.getpixel((tileX, tileY)) resultImg.putpixel((imgX, imgY), pixel) resultName = dataset + 'Result' resultImg.save(resultName + ext) newWidth = 2048 newHeight = 2048 resultImgNearest = resultImg.resize((newWidth, newHeight), Image.NEAREST) resultImgBilinear = resultImg.resize((newWidth, newHeight), Image.BILINEAR) resultImgBicubic = resultImg.resize((newWidth, newHeight), Image.BICUBIC) resultImgAntialias = resultImg.resize((newWidth, newHeight), Image.ANTIALIAS) resultImgNearest.save(resultName + 'Nearest' + ext) resultImgBilinear.save(resultName + 'Bilinear' + ext) resultImgBicubic.save(resultName + 'Bicubic' + ext) resultImgAntialias.save(resultName + 'Antialias' + ext)