本文整理汇总了Python中PIL.Image方法的典型用法代码示例。如果您正苦于以下问题:Python PIL.Image方法的具体用法?Python PIL.Image怎么用?Python PIL.Image使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PIL
的用法示例。
在下文中一共展示了PIL.Image方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_celeba
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def create_celeba(tfrecord_dir, celeba_dir, cx=89, cy=121):
print('Loading CelebA from "%s"' % celeba_dir)
glob_pattern = os.path.join(celeba_dir, 'img_align_celeba_png', '*.png')
image_filenames = sorted(glob.glob(glob_pattern))
expected_images = 202599
if len(image_filenames) != expected_images:
error('Expected to find %d images' % expected_images)
with TFRecordExporter(tfrecord_dir, len(image_filenames)) as tfr:
order = tfr.choose_shuffled_order()
for idx in range(order.size):
img = np.asarray(PIL.Image.open(image_filenames[order[idx]]))
assert img.shape == (218, 178, 3)
img = img[cy - 64 : cy + 64, cx - 64 : cx + 64]
img = img.transpose(2, 0, 1) # HWC => CHW
tfr.add_image(img)
#----------------------------------------------------------------------------
示例2: draw_text
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def draw_text(
img: Image,
text: str,
location: tuple = (0, 0),
text_color=(0, 0, 0)
) -> Image:
draw = ImageDraw.Draw(img)
try:
# For Linux
font = ImageFont.truetype("DejaVuSans.ttf", 20)
except Exception:
logger.warning("No font DejaVuSans; use default instead")
# For others
font = ImageFont.load_default()
draw.text(location, text, font=font, fill=text_color)
return img
示例3: preprocess
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def preprocess(self, inp):
"""
Default preprocessing method for the SketchPad is to convert the sketch to black and white and resize 28x28
"""
im_transparent = preprocessing_utils.decode_base64_to_image(inp)
im = PIL.Image.new("RGBA", im_transparent.size, "WHITE") # Create a white background for the alpha channel
im.paste(im_transparent, (0, 0), im_transparent)
im = im.convert('L')
if self.invert_colors:
im = PIL.ImageOps.invert(im)
im = im.resize((self.image_width, self.image_height))
if self.flatten:
array = np.array(im).flatten().reshape(1, self.image_width * self.image_height)
else:
array = np.array(im).flatten().reshape(1, self.image_width, self.image_height)
array = array * self.scale + self.shift
array = array.astype(self.dtype)
return array
示例4: __call__
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def __call__(self, img):
"""
Args:
img (PIL.Image): Image to be scaled.
Returns:
PIL.Image: Rescaled image.
"""
if isinstance(self.size, int):
w, h = img.size
if (w <= h and w == self.size) or (h <= w and h == self.size):
return img
if w < h:
ow = self.size
oh = int(self.size * h / w)
return img.resize((ow, oh), self.interpolation)
else:
oh = self.size
ow = int(self.size * w / h)
return img.resize((ow, oh), self.interpolation)
else:
return img.resize(self.size, self.interpolation)
示例5: _trim_image
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def _trim_image(img, tolerance):
"""Returns the tiniest `bbox` to trim `img`"""
result = None
for pixel in [(0, 0), (img.size[0] - 1, 0), (0, img.size[1] - 1),
(img.size[0] - 1, img.size[1] - 1)]:
if result is not None and result[0] < pixel[0] < result[2] - 1 \
and result[1] < pixel[1] < result[3] - 1:
# This pixel is already removed by current result
continue
bkg = PIL.Image.new(img.mode, img.size, img.getpixel(pixel))
diffbkg = PIL.ImageChops.difference(img, bkg)
if tolerance:
diffbkg = PIL.ImageChops.add(diffbkg, diffbkg, 2.0, -tolerance)
bbox = diffbkg.getbbox()
if not bbox:
# Image no longer exists after trim
return None
if result is None:
result = bbox
elif _img_size(bbox) < _img_size(result):
result = bbox
return result
示例6: trim_image
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def trim_image(imgdata, tolerance=1, minborder=10):
"""Trims the image, `tolerance` is an integer from 0 (not
tolerant, trims region with the exact same color) to 255
(too tolerant, will trim the whole image).
"""
img = PIL.Image.open(BytesIO(imgdata))
bbox = _trim_image(img, tolerance)
if bbox:
newbbox = (max(bbox[0] - minborder, 0),
max(bbox[1] - minborder, 0),
img.size[0] - max(img.size[0] - bbox[2] - minborder, 0),
img.size[1] - max(img.size[1] - bbox[3] - minborder, 0))
if newbbox != (0, 0, img.size[0], img.size[1]):
out = BytesIO()
img.crop(newbbox).save(out, format='jpeg')
out.seek(0)
return out.read()
# Image does not need to be modified
return True
# Image no longer exists after trim
return False
示例7: make_all_grids
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def make_all_grids(tensors, nrow=8, padding=2,
normalize=False, range=None, scale_each=False, pad_value=0):
"""Save a given Tensor into an image file.
Args:
tensors (list): Image to be saved. If given a mini-batch tensor,
saves the tensor as a grid of images_l1loss_ssim by calling ``make_grid``.
**kwargs: Other arguments are documented in ``make_grid``.
"""
from PIL import Image
ndarr = None
for tensor in tensors:
grid = make_grid(tensor, nrow=nrow, padding=padding, pad_value=pad_value,
normalize=normalize, range=range, scale_each=scale_each)
# Add 0.5 after unnormalizing to [0, 255] to round to nearest integer
if ndarr is None:
ndarr = grid.mul_(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).to('cpu', torch.uint8).numpy()
else:
ndarr = np.hstack(
(ndarr, grid.mul_(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).to('cpu', torch.uint8).numpy()))
return ndarr
示例8: save_image
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def save_image(tensors, filename, nrow=8, padding=2,
normalize=False, range=None, scale_each=False, pad_value=0):
"""Save a given Tensor into an image file.
Args:
tensors (list): Image to be saved. If given a mini-batch tensor,
saves the tensor as a grid of images_l1loss_ssim by calling ``make_grid``.
**kwargs: Other arguments are documented in ``make_grid``.
"""
from PIL import Image
ndarr = None
for tensor in tensors:
grid = make_grid(tensor, nrow=nrow, padding=padding, pad_value=pad_value,
normalize=normalize, range=range, scale_each=scale_each)
# Add 0.5 after unnormalizing to [0, 255] to round to nearest integer
if ndarr is None:
ndarr = grid.mul_(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).to('cpu', torch.uint8).numpy()
else:
ndarr = np.hstack(
(ndarr, grid.mul_(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).to('cpu', torch.uint8).numpy()))
# return ndarr
cv2.imwrite(filename, ndarr)
示例9: get_frame_buffer
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def get_frame_buffer(self, image):
buf = [0x00] * int(self.width * self.height / 8)
# Set buffer to value of Python Imaging Library image.
# Image must be in mode 1.
image_monocolor = image.convert('1')
imwidth, imheight = image_monocolor.size
if imwidth != self.width or imheight != self.height:
raise ValueError('Image must be same dimensions as display \
({0}x{1}).' .format(self.width, self.height))
pixels = image_monocolor.load()
for y in range(self.height):
for x in range(self.width):
# Set the bits for the column of pixels at the current position.
if pixels[x, y] != 0:
buf[int((x + y * self.width) / 8)] |= 0x80 >> (x % 8)
return buf
示例10: get_frame_buffer
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def get_frame_buffer(self, image):
buf = [0] * int(self.width * self.height / 8)
# Set buffer to value of Python Imaging Library image.
# Image must be in mode 1.
image_monocolor = image.convert('1')
imwidth, imheight = image_monocolor.size
if imwidth != self.width or imheight != self.height:
raise ValueError('Image must be same dimensions as display \
({0}x{1}).' .format(self.width, self.height))
pixels = image_monocolor.load()
for y in range(self.height):
for x in range(self.width):
# Set the bits for the column of pixels at the current position.
if pixels[x, y] != 0:
buf[int((x + y * self.width) / 8)] |= 0x80 >> (x % 8)
return buf
示例11: get_frame_buffer
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def get_frame_buffer(self, image):
buf = [0x00] * int(self.width * self.height / 4)
# Set buffer to value of Python Imaging Library image.
# Image must be in mode L.
image_grayscale = image.convert('L')
imwidth, imheight = image_grayscale.size
if imwidth != self.width or imheight != self.height:
raise ValueError('Image must be same dimensions as display \
({0}x{1}).' .format(self.width, self.height))
pixels = image_grayscale.load()
for y in range(self.height):
for x in range(self.width):
# Set the bits for the column of pixels at the current position.
if pixels[x, y] < 64: # black
buf[int((x + y * self.width) / 4)] &= ~(0xC0 >> (x % 4 * 2))
elif pixels[x, y] < 192: # convert gray to red
buf[int((x + y * self.width) / 4)] &= ~(0xC0 >> (x % 4 * 2))
buf[int((x + y * self.width) / 4)] |= 0x40 >> (x % 4 * 2)
else: # white
buf[int((x + y * self.width) / 4)] |= 0xC0 >> (x % 4 * 2)
return buf
示例12: get_frame_buffer
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def get_frame_buffer(self, image):
buf = [0x00] * int(self.width * self.height / 8)
# Set buffer to value of Python Imaging Library image.
# Image must be in mode 1.
image_monocolor = image.convert('1')
imwidth, imheight = image_monocolor.size
if imwidth != self.width or imheight != self.height:
raise ValueError('Image must be same dimensions as display \
({0}x{1}).' .format(self.width, self.height))
pixels = image_monocolor.load()
for y in range(self.height):
for x in range(self.width):
# Set the bits for the column of pixels at the current position.
if pixels[x, y] != 0:
buf[int((x + y * self.width) / 8)] |= 0x80 >> (x % 8)
return buf
##
# @brief: put an image to the frame memory.
# this won't update the display.
##
示例13: get_frame_buffer
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def get_frame_buffer(self, image):
buf = [0xFF] * int(self.width * self.height / 8)
# Set buffer to value of Python Imaging Library image.
# Image must be in mode 1.
image_monocolor = image.convert('1')
imwidth, imheight = image_monocolor.size
if imwidth != self.width or imheight != self.height:
raise ValueError('Image must be same dimensions as display \
({0}x{1}).' .format(self.width, self.height))
pixels = image_monocolor.load()
for y in range(self.height):
for x in range(self.width):
# Set the bits for the column of pixels at the current position.
if pixels[x, y] == 0:
buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
return buf
示例14: get_frame_buffer
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def get_frame_buffer(self, image):
'''
@brief: convert an image to a buffer
'''
buf = [0x00] * int(self.width * self.height / 8)
# Set buffer to value of Python Imaging Library image.
# Image must be in mode 1.
image_monocolor = image.convert('1')
imwidth, imheight = image_monocolor.size
if imwidth != self.width or imheight != self.height:
raise ValueError(
'Image must be same dimensions as display ({0}x{1}).'.format(
self.width, self.height
)
)
pixels = image_monocolor.load()
for y in range(self.height):
for x in range(self.width):
# Set the bits for the column of pixels
# at the current position.
if pixels[x, y] != 0:
buf[int((x + y * self.width) / 8)] |= 0x80 >> (x % 8)
return buf
示例15: load_hdr_as_tensor
# 需要导入模块: import PIL [as 别名]
# 或者: from PIL import Image [as 别名]
def load_hdr_as_tensor(img_path):
"""Converts OpenEXR image to torch float tensor."""
# Read OpenEXR file
if not OpenEXR.isOpenExrFile(img_path):
raise ValueError(f'Image {img_path} is not a valid OpenEXR file')
src = OpenEXR.InputFile(img_path)
pixel_type = Imath.PixelType(Imath.PixelType.FLOAT)
dw = src.header()['dataWindow']
size = (dw.max.x - dw.min.x + 1, dw.max.y - dw.min.y + 1)
# Read into tensor
tensor = torch.zeros((3, size[1], size[0]))
for i, c in enumerate('RGB'):
rgb32f = np.fromstring(src.channel(c, pixel_type), dtype=np.float32)
tensor[i, :, :] = torch.from_numpy(rgb32f.reshape(size[1], size[0]))
return tensor