实验吧,心中无码

# -*- coding:utf-8 -*-

import Image
import math

# Image库学习
im = Image.open("C:\Users\gaojie\Desktop\dog.jpg")
print im.format, im.size, im.mode  # 查看图像信息
#im.show()  # 显示图片
im.save('save.png', 'PNG')  # 保存图片
im2 = im.rotate(45)  # 逆时针旋转45度
box = (100, 100, 200, 200)
region = im.crop(box)  # 图片裁剪,抠出box位置的图片,存为region
region = region.transpose(Image.ROTATE_180)  # 翻转图片,transpose以为转置,翻转
im.paste(region, box)  # 图片粘贴,在图片对象im的box位置放上图片region

newImage = Image.new('RGBA', (640, 480), (0, 255, 0))  # 创建新的图片
newImage.save('newImage.png', 'PNG')  # 保存图片
# Image.blend(image1, image2, 0.5).show() # 合并两张图片,图片的尺寸和模式必须相同,alpha是一个介于[0,1]的浮点数
im3 = im.point(lambda i: i * 1.5)  # 参数为一个函数,对每个点进行50%的加强
print im.split()   # 分割成三个通道,此时r, g, b分别为三个图像的对象
im.resize((128, 128))  # 改变图像的大小
im.convert('RGBA')  # 改变图像的类型
print im.getpixel((4, 4))  # 获取某个像素位置的值
im.putpixel((4, 4), (255, 0, 0))  # 设置某个像素位置的值

# 心中无码
lena = Image.open('C:\Users\gaojie\Desktop\Lena.png')
b0 = ''
bnum = 0
width, height = lena.size
for x in range(width):
    for y in range(height):
        if lena.getpixel((x, y)) != (255, 255, 0):  # 心中无码,即非码区
            if lena.getpixel((x, y))[2] & 0x01:     # 取blue通道的最低位
                b0 += '0'
            else:
                b0 += '1'
            bnum += 1

length = int(math.sqrt(len(b0)))
print length, b0
img = Image.new('RGB', (length, length))
i = 0
for x in range(length):
    for y in range(length):
        if b0[i] == '0':
            img.putpixel([x, y], (0, 0, 0))
        else:
            img.putpixel([x, y], (255, 255, 255))
        i += 1
img.save('new.png')
img.show() 

产生的二维码,可用http://www.cnblogs.com/gwind/p/8030190.html的二维码解码,得到一个base64编码,解码后即可得到flag

posted on 2018-01-06 17:26  gwind  阅读(1540)  评论(0编辑  收藏  举报

导航