第七题,画面上就一幅图,页面源码中没有任何注释之类的线索,就只有图片有点奇怪。图片的中间有一个黑白条,估计看能不能从这里入手。 于是需要PYTHON的图形处理功能,网上找了找有个PIL库,需要自行安装,能够读取图片信息,于是初步思路就是先看看那个黑白条有些什么信息再说,摸着石头过河。
本来打算遍历图片所有的像素点信息,看看处于黑白条中的像素点跟其它的像素点有没有什么不同之处,但后面查了点图形方面的资料,发现我这个想法很傻…… 还是先补点基础知识。
---------------------------------------
图片模式:
1 1位像素,黑和白,存成8位的像素
L 8位像素,黑白
P 8位像素,使用调色板映射到任何其他模式
RGB 3×8位像素,真彩
RGBA 4×8位像素,真彩+透明通道
CMYK 4×8位像素,颜色隔离
YCbCr 3×8位像素,彩色视频格式
I 32位整型像素
F 32位浮点型像素
RGB
---------------------------------------
看到网上有人用GIMP,我也安装一个。打开那幅图片,找到黑白条所在的像素区域,将黑白条剪切出来。
import Image
if __name__ == '__main__':
img = Image.open('7.png')
#left,top,right,bottom
box = (0, 43, 608, 52)
belt = img.crop(box)
#get a sequence object containing pixel values
pixels = belt.getdata()
print('mode: %s' % img.mode)
print('amount of pixel: %d' % len(pixels))
print(pixels[0])
程序输出:
mode: RGBA
amount of pixel: 5472
(115, 115, 115, 255)
看来这幅图是RGBA模式,黑白条区域共有5472个像素点,第一个像素点的R,G,B,A的值分别为115,115,115,255。
读取图片信息的目的达到了,但怎样从这些信息中获得过关信息呢? 现在图片模式是RGBA-24位,如果是L-8位的话,就可以将每个像素转成ASCII码。PIL可以转换图片模式。于是增加代码:
import Image
if __name__ == '__main__':
img = Image.open('7.png')
#left,top,right,bottom
box = (0, 43, 608, 52)
belt = img.crop(box)
#get a sequence object containing pixel values
pixels = belt.getdata()
print('mode: %s' % img.mode)
print('amount of pixel: %d' % len(pixels))
print(pixels[0])
#convert mode RGBA to mode L
lBelt = belt.convert('L')
#get a sequence object containing pixel values
lPixels = lBelt.getdata()
#黑白条中的像素点有规律:每一行的像素点都是一样的,并且一行中也有相同的像素。
#但有一点不好处理的是:字母间可以通过能否组成单词来判断是否有重复值,但数字
#就不能通过这种方法来判断了
str = []
#step 7是通过试验出来的
for i in range(0, 608, 7):
str.append(chr(lPixels[i]))
x = lPixels[i]
print(''.join(str))
输出结果:
smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]
(最开始就是使用了去掉重复值的算法,导致读出来的数字不正确。110变成了10,116变成了16)
这一组数字处于ASCII码中的字母区域,于是转成ASCII码。增加代码:
result = [105, 110, 116, 101, 103, 114, 105, 116, 121]
print(''.join(chr(x) for x in result))
输出:integrity 就是它了!
通过做这题让我学习到了图片的一些基础知识,PIL库中Image模块的简单使用。
分享到:
相关推荐
7. **模块和库**:Python Challenge可能会引导学习者探索标准库和第三方库,例如`os`模块用于操作系统交互,`datetime`模块处理日期和时间,`itertools`模块提供无限迭代器,`requests`库用于网络请求等。...
在挑战中,参与者需要从指定网址(http://www.pythonchallenge.com/pc/def/ocr.html)获取页面内容,并从中提取特定的信息。接下来,我们将详细探讨此挑战中涉及的关键知识点。 ### 关键知识点一:URL请求 在...
Python Challenge 是一个在线的编程挑战平台,专为Python初学者设计,旨在通过一系列有趣的谜题来提升编程技能。这个挑战包括33个不同的关卡,每个关卡都需要运用Python编程知识来解决。下面将对部分关卡的关键知识...
在处理这个问题时,你可能会发现一个URL(例如:`http://www.pythonchallenge.com/pc/return/italy.jpg`),这是Python Challenge中常见的线索。你需要使用Python的内置`urllib`库来发送HTTP请求,并获取网页内容。...
如果您还没有听说过“Python挑战”,那么现在就试一试吧!我可以等待。 在你翻到下一页之前,要注意这本电子书包含了很多题目 所有的挑战,可能会破坏你的旅程。如果你不关心 如果你不打算吹嘘自己的“成就”,那就...
python challenge习题答案,蛮有意思的
标题和描述均提到了"pythonchallenge level2官方方法集",这表明文章主要聚焦于Python Challenge网站上第二级挑战的官方解决策略集合。Python Challenge是一个知名的编程谜题网站,通过一系列精心设计的谜题来测试和...
在本题中,我们面临的是来自www.pythonchallenge.com的一个挑战,这是一个在线平台,旨在帮助学习者提高Python编程技能。挑战通常涉及解决谜题,而这些谜题的答案隐藏在代码或网页的某处。我们将深入探讨如何解第三...
在本题中,我们将深入探讨Python编程语言在解决在线挑战平台`www.pythonchallenge.com`上的第四关问题。这个挑战通常涉及到一系列的编程技巧、逻辑推理和对网站给出线索的解析。我们将通过分析提供的"level4"文件来...
标题“python challenge challenge2之java解”涉及到的是一个Python挑战赛的第二关,而解决方案是通过Java语言来实现的。这个挑战可能是一个编程难题或竞赛,要求参赛者使用特定的技术来解决问题。在这种情况下,...
7. **社区互动**:PythonChallenge这类平台通常有活跃的社区,用户可以讨论问题、分享解决方案,这不仅有助于学习,也有助于建立编程社群,扩大专业网络。 综上所述,这个压缩包提供了一个全面的学习和实践机会,让...
在本题中,我们将深入探讨Python编程语言在解决在线挑战平台`www.pythonchallenge.com`上的第五个问题。这个挑战通常会涉及一系列的编程技巧、逻辑思维以及对Python库的运用。我们将通过分析提供的代码和注释,理解...
在Python Challenge这个在线编程挑战网站上,第二题通常是一个引导初学者进入更复杂问题的起点。这个挑战旨在帮助用户提升Python编程技能,并了解如何利用Python解决实际问题。在这个题解中,我们将深入探讨如何解开...
在本资源中,我们关注的是一个名为"每天一个PythonChallenge《任务二》"的项目,它包含源码和设计说明书,旨在提供一个学习和实践Python编程的平台。这个挑战可能是系列教程的一部分,鼓励用户通过实际操作来提升...
在这个PythonChallenge《任务三》中,我们探讨的是一系列基于Python编程的练习,旨在提升技能、理解和解决问题的能力。挑战可能涵盖了各种Python基础知识,包括语法、数据结构、函数、模块、异常处理、文件操作等。...
在本项目中,我们探索了"PythonChallenge",这是一个在线平台,旨在帮助用户提升Python编程技能并通过一系列有趣的谜题来解决挑战。这个挑战网站,pythonchallenge.com,以其独特的教学方式吸引了许多初学者和经验...
"python-challenge-源码.rar"这个压缩包显然包含了某个Python编程挑战的源代码,可能是某个在线编程课程、比赛或者个人练习项目。通过分析和学习这些源码,我们可以深入了解Python编程的各种技巧和实践应用。 首先...
PythonChallenge是一个在线编程挑战网站,旨在帮助初学者和有经验的程序员通过解决一系列有趣的谜题来提高他们的Python技能。这个压缩包文件`pythonchallenge-main`很可能包含了解决这些挑战所需的Python源代码。...
通过分析给出的URL(http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345),我们可以发现这是一个链表结构,其中"nothing"的值不断变化。游戏提示我们使用Python的`urllib`库来处理这个问题,但也...
Python-Challenge(1)-源码.rar 是一个针对初学者和进阶者提供的Python编程挑战资源,包含Python-Challenge-master文件夹,这个文件夹中很可能包含了练习题目、源代码以及可能的解决方案。Python Challenge是一个在线...