Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengubah saiz, memangkas, memutar dan membalikkan imej dalam Python

Bagaimana untuk mengubah saiz, memangkas, memutar dan membalikkan imej dalam Python

WBOY
WBOYke hadapan
2023-05-10 10:43:212725semak imbas

    Ubah saiz, potong, putar, selak gambar

    Pertama sekali, gambar asal kami dimuat turun dalam talian 10 buahSaiz yang berbeza gambar adalah seperti berikut:

    Bagaimana untuk mengubah saiz, memangkas, memutar dan membalikkan imej dalam Python

    Operasi 1: ubah saiz Saiz semula gambar kepada saiz yang sama (320,240)

    from PIL import Image
    import torchvision.transforms as transforms
    #使用PIL库读入图片并进行resize
    def ResizeImage():
        if not os.path.exists(rdir):
            os.makedirs(rdir)
        for i in range(10):
            im = Image.open(dir+str(i)+".jpg")
            im = im.resize((320,240),Image.BILINEAR)  #第一个参数为想要的size,第二个参数为插值方法,双线性插值这里用的是
            im.save('{}/{}.jpg'.format(rdir, i))

    Operasi 2: Pangkas (termasuk pemangkasan di sekeliling tengah dan pemangkasan rawak)

    #图像随机剪裁和中心剪裁
    def crop(lib):
        for i in range(10):
            img = Image.open(lib+"/"+str(i)+".jpg")
            CenterCrop = transforms.CenterCrop((240,320))   #中心裁剪
            cropped_image = CenterCrop(img)  #PIL.Image.Image
            # im=np.array(cropped_image)  #可以将PIL.Image.Image转成ndarry
            #cropped_image.show()    #将图片显示
            cropped_image.save('{}/cen_crop{}.jpg'.format(rdir, i))
            RandomCrop = transforms.RandomCrop(size=(240, 320))  #随机剪裁
            random_image = RandomCrop(img)
            random_image.save('{}/rand_crop{}.jpg'.format(rdir, i))

    Operasi 3: Putaran rawak

    #随机旋转
    def random_rotation(lib):
        for i in range(10):
            img = Image.open(lib+"/"+str(i)+".jpg")
            RR = transforms.RandomRotation(degrees=(10, 80))   #degrees为随机旋转的角度
            rr_image = RR(img)
            rr_image.save('{}/rand_rotation{}.jpg'.format(rdir, i))

    Operasi 4: Flip

    #图片依概率翻转,p为翻转的概率
    def horizontal_flip(lib):
        for i in range(10):
            img = Image.open(lib+"/"+str(i)+".jpg")
            HF = transforms.RandomHorizontalFlip(p=1.0)  #p为概率,缺省时默认0.5
            hf_image = HF(img)
            hf_image.save('{}/hori_flip{}.jpg'.format(rdir, i))

    Berikut menunjukkan gambar selepas operasi:

    Bagaimana untuk mengubah saiz, memangkas, memutar dan membalikkan imej dalam Python

    Dari atas ke bawah, setiap baris adalah hasil daripada saiz semula, potong tengah, flip, potong rawak dan putaran rawak

    Transformasi imej tunggal Saiz——img.resize()

    Ini adalah program mudah yang saya pelajari, yang boleh menukar saiz imej, sama ada jpg atau png:

    #encoding=utf-8
    #author: walker
    #date: 2014-05-15
    #function: 更改图片尺寸大小
    from PIL import Image
    '''
    filein: 输入图片
    fileout: 输出图片
    width: 输出图片宽度
    height:输出图片高度
    type:输出图片类型(png, gif, jpeg...)
    '''
    def ResizeImage(filein, fileout, width, height, type):
      img = Image.open(filein)
      out = img.resize((width, height),Image.ANTIALIAS) #resize image with high-quality
      out.save(fileout, type)
    if __name__ == "__main__":
      filein = r'0.jpg'
      fileout = r'testout.png'
      width = 6000
      height = 6000
      type = 'png'
      ResizeImage(filein, fileout, width, height, type)

    Ini fungsi img.resize ((lebar, tinggi),Imej.ANTIALIAS)

    Parameter kedua:

    • Image.NEAREST: Kualiti rendah

    • Image.BILINEAR: Dwilinear

    • Image.BICUBIC: Interpolasi splin kubik

    • Image.ANTIALIAS : Kualiti tinggi

    Atas ialah kandungan terperinci Bagaimana untuk mengubah saiz, memangkas, memutar dan membalikkan imej dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam