2017-05-31 2 views
1

C'est une question très rudimentaire et je suis sûr qu'il ya une partie de la bibliothèque Pillow/documentation que j'ai manqué ...retour « morceau » de l'image en utilisant Python et Pillow

Disons que vous avez un 128x128, et vous voulez enregistrer le "morceau" de celui-ci qui est "x" pixels à droite du coin supérieur gauche de l'image originale, et "y" pixels du coin supérieur gauche de l'image originale (de sorte que le Le coin supérieur gauche de ce "bloc" est situé à (x, y) Si vous savez que le morceau que vous voulez est "a" pixels de large et "b" pixels de haut (donc les quatre coins du morceau que vous voulez sont connus, et ils sont (x, y), (x + a, y), (x, y + b), (x + a, y + b)) - comment voulez-vous sauver ce "morceau" de l'image originale que vous est donné en tant que fichier image séparé?

De manière plus concise, comment puis-je sauvegarder des images en utilisant leurs coordonnées pixels en utilisant PIL? toute aide/pointeurs sont appréciés.

+0

Qu'en est-[cette partie de la documentation] (http://pillow.readthedocs.io/en/3.1.x/handbook/tutorial.html#cutting-pasting- et-fusion-images)? Je suppose que cette sous-image est en interne la même que toute autre image et peut être mise dans les fonctions d'E/S disponibles. (Mais je n'ai jamais utilisé cette librairie, j'aime scikit-image, mais c'est une dépendance beaucoup plus lourde je suppose) – sascha

Répondre

2

venu avec:

""" 
The function "crop" takes in large_img, small_img, x, y, w, h and returns the image lying within these restraints: 
large_img: the filename of the large image 
small_img: the desired filename of the smaller "sub-image" 
x: x coordinate of the upper left corner of the bounding box 
y: y coordinate of the upper left corner of the bounding box 
w: width of the bounding box 
h: height of the bounding box 
""" 
def crop(large_img, small_img, x, y, w, h): 
    img = Image.open(large_img) 
    box = (x, y, x+w, y+h) 
    area = img.crop(box) 
    area.save(small_img, 'jpeg')