更改 for-loop PIL Image 中的像素颜色
Change pixel color in for-loop PIL Image
我正在编写一个将“二进制”写入像素的应用程序(“1”代表白色,“0”代表黑色,“ ”代表浅灰色)。
这是一张类似图片的放大图:
我用 photoshopping 应用程序制作这张照片只是为了测试,但如何让您的应用程序在 for
循环中实际写入像素(到 .png 文件)?
这是我已经写下的代码。
from PIL import Image
def makePicture(string, file):
img = Image.new("RGB", (round(len(string)), round(len(string))), 0xffffff)
pixel = img.load()
w = img.size[0]
h = img.size[1]
print("Converting string to binary...")
print(' '.join(format(ord(x), 'b') for x in string))
如有不妥之处请指正!这是我第一次使用 PIL
图片库。
这是我最好的猜测如何做你想做的事。对于一个 3 个字符的字符串,它会生成一个 3x8 灰度 .png
格式的图像,但其中的像素都是黑色 (0) 或白色 (255),因为我一直不明白你所说的浅灰色在哪里像素来自…
from PIL import Image
def makePicture(string, filename):
w, h = len(string), 8
img = Image.new("L", (w, h), 0x7f) # Gray-scale image.
# Convert string to pixels.
pixels = []
for value in (ord(ch) for ch in string):
col = []
mask = 0b10000000 # Bit mask.
while mask:
col.append(bool(value & mask) * 255)
mask >>= 1 # Shift right one bit position.
pixels.append(col)
# Transfer pixels to image.
for x in range(w):
for y in range(h):
img.putpixel((x, y), pixels[x][y])
# img.show()
img.save(filename)
if __name__ == '__main__':
makePicture('Hi!', 'binary_image.png')
这是它根据示例字符串创建的图像的放大图 'Hi!'
:
我正在编写一个将“二进制”写入像素的应用程序(“1”代表白色,“0”代表黑色,“ ”代表浅灰色)。
这是一张类似图片的放大图:
我用 photoshopping 应用程序制作这张照片只是为了测试,但如何让您的应用程序在 for
循环中实际写入像素(到 .png 文件)?
这是我已经写下的代码。
from PIL import Image
def makePicture(string, file):
img = Image.new("RGB", (round(len(string)), round(len(string))), 0xffffff)
pixel = img.load()
w = img.size[0]
h = img.size[1]
print("Converting string to binary...")
print(' '.join(format(ord(x), 'b') for x in string))
如有不妥之处请指正!这是我第一次使用 PIL
图片库。
这是我最好的猜测如何做你想做的事。对于一个 3 个字符的字符串,它会生成一个 3x8 灰度 .png
格式的图像,但其中的像素都是黑色 (0) 或白色 (255),因为我一直不明白你所说的浅灰色在哪里像素来自…
from PIL import Image
def makePicture(string, filename):
w, h = len(string), 8
img = Image.new("L", (w, h), 0x7f) # Gray-scale image.
# Convert string to pixels.
pixels = []
for value in (ord(ch) for ch in string):
col = []
mask = 0b10000000 # Bit mask.
while mask:
col.append(bool(value & mask) * 255)
mask >>= 1 # Shift right one bit position.
pixels.append(col)
# Transfer pixels to image.
for x in range(w):
for y in range(h):
img.putpixel((x, y), pixels[x][y])
# img.show()
img.save(filename)
if __name__ == '__main__':
makePicture('Hi!', 'binary_image.png')
这是它根据示例字符串创建的图像的放大图 'Hi!'
: