# -*- coding: utf-8 -*-
"""
Created on Thu Nov 03 12:23:38 2016

@author: Xingjia Wu

To run:
indir = r'.\test' # Directory having images for augmentation
newdir = r'.\aug' # Directory for saving augmented images. Will create the folder if not exist.

picaugment(indir, newdir)

"""

import os
from keras.preprocessing.image import ImageDataGenerator, img_to_array, load_img
def picaugment(indir, newdir, augsize = 10):
    
    # Using keras ImageDataGenerator to generate random images
    datagen = ImageDataGenerator(
        featurewise_std_normalization=False,
        rotation_range = 20,
        width_shift_range = 0.10,
        height_shift_range = 0.10,
        shear_range = 0.1,
        zoom_range = 0.1,
        horizontal_flip = True)
    
    piclist = os.listdir(indir)
    if not os.path.exists(newdir):
        os.makedirs(newdir)
    
    for i in range(0,len(piclist)):
        img = load_img(os.path.join(indir, piclist[i]))
        x = img_to_array(img)
        x = x.reshape((1,) + x.shape)
        j = 0
        for batch in datagen.flow(x, batch_size = 1, save_to_dir = newdir, 
                              save_prefix = piclist[i].split('.')[0]):
            j += 1
            if j >= augsize:
                break