先扫一下盲:http://www.jianshu.com/p/c3387bcc4f6e。
我们所说的这个5.2英寸是手机屏幕对角线的长度。
分辨率1920px*1080px的意思就是,在这个华为荣耀7的5.2英寸屏幕上,在竖向的高度上有1920个像素块,在横向的宽度上有1080个像素块。
我们可以这么理解屏幕像素密度,即在一个对角线长度为1英寸的正方形内所拥有的像素数。
os.path.exists(path)
如果path存在,返回True;如果path不存在,返回False。
os.walk(top, topdown=True, onerror=None, followlinks=False)
可以得到一个三元tupple(dirpath, dirnames, filenames),
第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
dirpath 是一个string,代表目录的路径,
dirnames 是一个list,包含了dirpath下所有子目录的名字。
filenames 是一个list,包含了非目录文件的名字。
这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name).
绝对路径就是文件的真正存在的路径,是指从硬盘的根目录(盘符)开始,进行一级级目录指向文件。
相对路径就是以当前文件为基准进行一级级目录指向被引用的资源文件。
In [43]:
import os
import glob
from PIL import Image
def thumbnail_pic(path):
a = glob.glob(r'*.jpg')
for x in a:
name = os.path.join(path, x)
im = Image.open(name)
im.thumbnail((1136, 640))
print(im.format, im.size, im.mode)
im.save(name, 'JPEG')
print('Done!')
if __name__ == '__main__':
path = '.'
thumbnail_pic(path)
In [8]:
import glob
for filename in glob.glob('**/*.jpg', recursive=True):
print(filename)
In [24]:
import os
import glob
from PIL import Image
def thumbnail_pic(path):
for x in glob.glob('**/*.jpg', recursive=True):
print ("x is \n ", x)
name = os.path.join(path, x)
print ("the join path is : \n", name)
im = Image.open(name)
print (im.format, im.size, im.mode)
im.copy().thumbnail((1136, 640))
print (im.format, im.size, im.mode)
im.save("%s/output/%"/, 'JPEG')
print('Done!')
if __name__ == '__main__':
path = '.'
thumbnail_pic(path)
http://pillow.readthedocs.io/en/3.1.x/reference/Image.html#create-thumbnails 这个直接通过thumbnail()这个方法来做到resize。
在python3.5中,glob.glob通过**来递归得寻找所有符合.jpg的文件,比起2.7来说确实方便很多。
另外为了保存到和原image同一目录下,我们要os.path.splitext(path)
分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作.
下面的file,ext里,file用来当做绝对路径,最后用im.save( file + ".thum.jpg")
。其中.thum.jpg只是为了方便我们知道哪些文件是重新制作的,也可以直接用'.jpg'
In [42]:
from PIL import Image
import glob, os
size = 100, 100
for infile in glob.glob("**/*.jpg"):
file, ext = os.path.splitext(infile)
print (file)
print (ext)
im = Image.open(infile)
im.thumbnail(size)
im.save( file + ".thum.jpg")
#print (im.format, im.size, im.mode)
In [41]:
from PIL import Image
import glob, os
size = 100, 100
for infile in glob.glob("**/*.jpg"):
file, ext = os.path.split(infile)
print (file)
print (ext)
im = Image.open(infile)
im.thumbnail(size)
im.save( "./output/" + ext)
#print (im.format, im.size, im.mode)
# -*- coding:utf-8 -*-
# *第 0005 题:**你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。
from PIL import Image
import glob, os
size = 100, 100
def thumbnail_rel(path):
for infile in glob.glob("**/*.jpg"):
file, ext = os.path.splitext(infile)
# print (file)
# print (ext)
img = Image.open(infile)
img.thumbnail(size)
img.save( file + ".thum.jpg")
#print (im.format, im.size, im.mode)
print ('Done!')
def thumbnail_abs(path):
for infile in glob.glob("**/*.jpg"):
file, ext = os.path.split(infile)
# print (file)
# print (ext)
img = Image.open(infile)
img.thumbnail(size)
img.save( path + '/output/' + ext)
#print (im.format, im.size, im.mode)
print ('Done!')
if __name__ == '__main__':
path = '.'
thumbnail_rel(path)
thumbnail_abs(path)
在直接用python play5.py
的时候,出错了。
忘了切换成python3.5的环境。
另外我写上了path,另外img.save( path + file + ".thum.jpg")
.
出错了,把path去掉就好了,img.save( file + ".thum.jpg")
因为我在path部分写的是'.', 对于thumbnail_rel, 保存的位置就是'.anime/XXX
,但是并没有.anime
这个文件夹,去掉path后直接是anime就可以了。如果anime前面多一个/
也可以。
而对于thumbnail_abs, ./output/XXXX
是能识别的,所以没有报错
In [ ]: