2017-01-27 1 views
0

Я пытаюсь сделать изображение попрта (показано ниже), но я не знаю, как изменить размер изображения, а затем разделить его на 9 меньших изображений, разделяемых на 1 большое изображение, которое имеет тот же размер, что и оригинал один. Вот сценарий (часть сценария, который делает Popart является def Popart():PIL Как изменить размер, разделить и поделиться изображением на 1 новом изображении?

from tkinter import* 
import tkinter as Tkinter 
from tkinter import filedialog, DISABLED 
import os 
import ntpath 
from PIL import Image 

def EchelleDeGris(): 
    Ima2=Image.new("RGB",(z[0],z[1])) 
    px=Ima1.load() 
    px1=Ima2.load() 
    for x in range(z[0]): 
     for y in range(z[1]): 
      p=px[x,y] 
      o=int((p[0]+p[1]+p[2])/3) 
      px1[x,y]=(o,o,o) 
    Ima2.save("ImageMod.png") 
    im2 = PhotoImage(file="ImageMod.png") 
    main.image = im2 
    I2 = Tkinter.Label(main, image=im2) 
    I2.grid(row=0, column=3, rowspan =6) 

def SupprimerImage(): 
    I2 = Tkinter.Label(main, image=imt) 
    I2.grid(row=0, column=3, rowspan =6) 

def Luminosite(): 
    Ima2=Image.new("RGB",(z[0],z[1])) 
    px=Ima1.load() 
    px1=Ima2.load() 
    for x in range(z[0]): 
     for y in range(z[1]): 
      p=px[x,y] 
      px1[x,y]=(p[0]+S1.get(),p[1]+S1.get(),p[2]+S1.get()) 
    Ima2.save("ImageMod.png") 
    im2 = PhotoImage(file="ImageMod.png") 
    main.image = im2 
    I2 = Tkinter.Label(main, image=im2) 
    I2.grid(row=0, column=3, rowspan =6) 

def AnnulerModifications(): 
    I2 = Tkinter.Label(main, image=im1) 
    I2.grid(row=0, column=3, rowspan =6) 

def PopArt(): 
    Ima2=Image.new("RGB",(z[0],z[1])) 
    px=Ima1.load() 
    px1=Ima2.load() 
    for x in range(z[0]): 
     for y in range(z[1]): 
      p=px[x,y] 
      if type(p)==int: 
       p=(p,p,p) 
      o=int((p[0]+p[1]+p[2])/3) 
      if o<85: 
       px1[x,y]=(0,0,255) 
      elif 85<o<170: 
       px1[x,y]=(0,255,0) 
      elif o>170: 
       px1[x,y]=(255,0,0) 
    Ima2.save("ImageMod.png") 
    im2 = PhotoImage(file="ImageMod.png") 
    main.image = im2 
    I2 = Tkinter.Label(main, image=im2) 
    I2.grid(row=0, column=3, rowspan =6) 






main=Tk() 

main.withdraw() 
a = filedialog.askopenfilename() 
main.deiconify() 

main.configure(background="#a1dbcd") 
main.title("Photoshop Version.Megzari") 

Ima1=Image.open(a) 
z=Ima1.size 
nux=Image.new("RGB",(z[0],z[1])) 
nuxy=nux.load() 
for x in range(z[0]): 
    for y in range(z[1]): 
     nuxy[x,y]=(255,255,255) 
nux.save("Blank.png") 








if z>(400,400): 
    im2 = Tkinter.PhotoImage(file="ImageBlank.png") 
    main.image = im2 
    I2 = Tkinter.Label(main, image=im2) 
    I2.grid(padx=20, pady=20, row=0, column=1, rowspan =6) 
    T1 = Tkinter.Label(main, image=im2) 
    T1.grid(padx=20, pady=20, row=0, column=3, rowspan =6) 
    B1 = Tkinter.Button(main, text ="Echelle de gris", command = EchelleDeGris, fg="#a1dbcd", bg="#383a39", state=DISABLED) 
    B1.grid(padx=20, pady=20, row=0, column=2) 
    B3 = Tkinter.Button(main, text ="Appliquer Luminosité", command = Luminosite, fg="#a1dbcd", bg="#383a39", state=DISABLED) 
    B3.grid(padx=20, pady=20, row=2, column=2) 
    S1 = Scale(main, from_=0, to=254, orient=HORIZONTAL, fg="#a1dbcd", bg="#383a39", state=DISABLED, length = 200) 
    S1.grid(row=1, column=2) 
    B2 = Tkinter.Button(main, text ="Supprimer Image", command = SupprimerImage, fg="#a1dbcd", bg="#383a39", state=DISABLED) 
    B2.grid(padx=20, pady=20, row=4, column=2) 
    B3 = Tkinter.Button(main, text ="Annuler Modifications", command = AnnulerModifications, fg="#a1dbcd", bg="#383a39", state=DISABLED) 
    B3.grid(padx=20, pady=20, row=3, column=2) 
    B4 = Tkinter.Button(main, text ="Pop Art", command = PopArt, fg="#a1dbcd", bg="#383a39", state=DISABLED) 
    B4.grid(padx=20, pady=20, row=5, column=2) 
elif z<(400,400): 
    im1 = Tkinter.PhotoImage(file=a) 
    I1 = Tkinter.Label(main, image=im1) 
    I1.grid(padx=20, pady=20, row=0, column=1, rowspan =6) 
    imt = Tkinter.PhotoImage(file="Blank.png") 
    T1 = Tkinter.Label(main, image=imt) 
    T1.grid(padx=20, pady=20, row=0, column=3, rowspan =6) 
    B1 = Tkinter.Button(main, text ="Echelle de gris", command = EchelleDeGris, fg="#a1dbcd", bg="#383a39", state=NORMAL) 
    B1.grid(padx=20, pady=20, row=0, column=2) 
    B3 = Tkinter.Button(main, text ="Appliquer Luminosité", command = Luminosite, fg="#a1dbcd", bg="#383a39") 
    B3.grid(padx=20, pady=20, row=2, column=2) 
    S1 = Scale(main, from_=0, to=254, orient=HORIZONTAL, fg="#a1dbcd", bg="#383a39", length = 200) 
    S1.grid(row=1, column=2) 
    B2 = Tkinter.Button(main, text ="Supprimer Image", command = SupprimerImage, fg="#a1dbcd", bg="#383a39") 
    B2.grid(padx=20, pady=20, row=4, column=2) 
    B3 = Tkinter.Button(main, text ="Annuler Modifications", command = AnnulerModifications, fg="#a1dbcd", bg="#383a39") 
    B3.grid(padx=20, pady=20, row=3, column=2) 
    B4 = Tkinter.Button(main, text ="Pop Art", command = PopArt, fg="#a1dbcd", bg="#383a39") 
    B4.grid(padx=20, pady=20, row=5, column=2) 

s=S1.get() 




main.mainloop() 

Вот что я хочу сделать: popart

Из-за этого (я знаю, что цвета не совсем идеально): chev.png

Я также знаю, что я использую простые переменные, как z, где я должен использовать, например, Original_Image .Я просто хочу знать, как изменить его и разбить его, сохраняя при этом оригинальный размер изображения.

ответ

0

У меня есть 9 разных изображений, каждый из которых называется result0.png; result1.png; result2.png;..., поэтому я создаю список, содержащий эти изображения, затем я открываю их все сразу с помощью цикла for, а затем меняю их размер и каждый из них в зависимости от их положения, созданное изображение. Под. Код:

Img1=[None]*9 
    pixels1=[None]*9 
    Imaz=Image.new("RGB",(basewidth*3,hsize*3)) 
    pixels=Imaz.load() 
    for i in range(9): 
     Img1[i]=Image.open(''+dir_path+'\\PopArt\\Resized Images\\resized_image'+str(i)+'.png') 
     pixels1[i]=Img1[i].load() 


    for x in range(0,basewidth): 
     for y in range(0,hsize): 
      pixels[x,y]=pixels1[0][x,y] 
     for y in range(hsize,hsize*2): 
      pixels[x,y]=pixels1[1][x,y-hsize] 
     for y in range(hsize*2,hsize*3): 
      pixels[x,y]=pixels1[2][x,y-hsize*2] 

    for x in range(basewidth,basewidth*2): 
     for y in range(0,hsize): 
      pixels[x,y]=pixels1[3][x-basewidth,y] 
     for y in range(hsize,hsize*2): 
      pixels[x,y]=pixels1[4][x-basewidth,y-hsize] 
     for y in range(hsize*2,hsize*3): 
      pixels[x,y]=pixels1[5][x-basewidth,y-hsize*2] 

    for x in range(basewidth*2,basewidth*3): 
     for y in range(0,hsize): 
      pixels[x,y]=pixels1[6][x-basewidth*2,y] 
     for y in range(hsize,hsize*2): 
      pixels[x,y]=pixels1[7][x-basewidth*2,y-hsize] 
     for y in range(hsize*2,hsize*3): 
      pixels[x,y]=pixels1[8][x-basewidth*2,y-hsize*2] 
    Imaz = Imaz.resize((size[0] , size[1]), PIL.Image.ANTIALIAS) 
    Imaz.save(""+dir_path+"\\PopArt\\Result Image\\result.png") 
Смежные вопросы