python下载图片(2)
#-*- coding: UTF-8 -*-
import urllib2, re,datetime,time, os,sys
from PIL import Image, ImageDraw, ImageFont
from math import atan, degrees
#
#图片下载类
#功能:下载图片,生成缩略图,生成水印图
#
class downloadPic:
def __init__(self,picDir,Font):
self.picDir=picDir
self.FONT = Font
def getFilename(self,urlT):
#print urlT
ndate=datetime.datetime.now()
if not os.path.exists('%s%s' %(self.picDir,ndate.year)):
os.mkdir('%s%s' %(self.picDir,ndate.year))
if not os.path.exists('%s%s/%s' % (self.picDir,ndate.year,ndate.month)):
os.mkdir('%s%s/%s' % (self.picDir,ndate.year,ndate.month))
if not os.path.exists('%s%s/%s/%s' % (self.picDir,ndate.year,ndate.month,ndate.day)):
os.mkdir('%s%s/%s/%s' % (self.picDir,ndate.year,ndate.month,ndate.day))
if not os.path.exists('%s%s/%s/%s/%s' % (self.picDir,ndate.year,ndate.month,ndate.day,'src')):
os.mkdir('%s%s/%s/%s/%s' % (self.picDir,ndate.year,ndate.month,ndate.day,'small'))
os.mkdir('%s%s/%s/%s/%s' % (self.picDir,ndate.year,ndate.month,ndate.day,'mark'))
os.mkdir('%s%s/%s/%s/%s' % (self.picDir,ndate.year,ndate.month,ndate.day,'src'))
extname=urlT.split('.')
extname=extname[len(extname)-1]
ntime="%s.%s0000" % (int(time.mktime(ndate.timetuple())),ndate.microsecond)
ntime=ntime[:17]
filename='%s%s/%s/%s/src/%s.%s' % (self.picDir,ndate.year,ndate.month,ndate.day,ntime,extname)
print filename
self
return [filename,ntime]#图片全地址,保存数据库ID
def downloadPic(self,urlT,filenameT):
request = urllib2.Request(urlT)
opener = urllib2.build_opener()
f = opener.open(request)
#print f.headers.dict['content-type']
#if f.headers.dict['content-type']=='image/jpeg':
#保存到文件
xfile = open(filenameT, 'wb')
xfile.write(f.read())
xfile.close()
print '下载图片%s ok' % urlT
return True
#else:
#TODO 抛出异常
#raise Exception,'not img'
def markPic(self,srcFileName,text,markFileName):
img = Image.open(srcFileName).convert("RGB")
watermark = Image.new("RGBA", (img.size[0], img.size[1]))
draw = ImageDraw.ImageDraw(watermark, "RGBA")
size = 0
while True:
size += 1
nextfont = ImageFont.truetype(self.FONT, size)
nexttextwidth, nexttextheight = nextfont.getsize(text)
if nexttextwidth+nexttextheight/3 > watermark.size[0]:
break
font = nextfont
textwidth, textheight = nexttextwidth, nexttextheight
draw.setfont(font)
draw.text(((watermark.size[0]-textwidth)/2,
(watermark.size[1]-textheight)/2), text)
watermark = watermark.rotate(degrees(atan(float(img.size[1])/img.size[0])),
Image.BICUBIC)
mask = watermark.convert("L").point(lambda x: min(x, 55))
watermark.putalpha(mask)
img.paste(watermark, None, watermark)
img.thumbnail((300, 300))
img.save(markFileName)
def smallPic(self,srcFileName,smallFileNmae):
im = Image.open(srcFileName)
im.thumbnail((100, 100))
im.save(smallFileNmae)
python下载图片(2)的更多相关文章
- python下载图片超时的调查
在使用python3下载图片时, 常用的方法有urlretrieve和requests两种, 不管哪种方法在网速极慢的情况下, 会出现图片下载卡住现象.那如何解决呢? 小编根据网上提供的资料测试了几种 ...
- Python下载图片并保存本地的两种方式
一:使用Python中的urllib类中的urlretrieve()函数,直接从网上下载资源到本地,具体代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
- python 下载图片的方法
a='http://wx1.sinaimg.cn/mw600/006HOayNgy1fqjdi2nxohj32pw3o8x6s.jpg' #图片下载地址 ( 这里改成 文件txt地址)w='/U ...
- 使用python下载图片(福利)
刚学python 没多久, 代码处处是漏洞,也希望各位大佬理解一下 爬出来的图片... 使用的 是 https://www.tianapi.com/ 接口下的 美女图片... (需要自己注册一个账号 ...
- Python下载图片小程序
欢迎大侠们指正批评 思路: 1.引入相关的python文件(import re import urllib) 2.读取对应网页的html文件(使用 urllib) def getHtml(url): ...
- Python 下载图片的几种方法
import osos.makedirs('./image/', exist_ok=True)IMAGE_URL = "http://image.nationalgeographic.com ...
- python下载图片(3)
# -*- coding: utf-8 -*-"""some function by metaphy,2007-04-03,copyleftversion 0.2&quo ...
- python下载图片
import re import urllib.request def getHtml(url): page = urllib.request.urlopen(url) html = page. ...
- python 下载图片
import requests from PIL import Image from io import BytesIO url = 'http://image2.buslive.cn/shp/upl ...
随机推荐
- 我的MFC/C++学习笔记 http://blog.bccn.net/CrystalFan/6909
2009.07.31 ------------------------------------------------------------------------------------ No.1 ...
- php实现求链表中倒数第k个节点
php实现求链表中倒数第k个节点 一.总结 $head = $head->next; //1.将$head节点next域里面的记录的那个地址值($head节点的下一个节点的地址)给$head,$ ...
- 【奇葩笔试】—— printf() 作为函数的参数及其返回值
int f(int a, int b, int c){ return 0; } int main(int, char**){ f(printf("a"), printf(" ...
- 如何在 Linux 中统计一个进程的线程数
编译自:http://ask.xmodulo.com/number-of-threads-process-linux.html作者: Dan Nanni原创:LCTT https://linux.cn ...
- Android 应用中十大常见 UX 错误 分类: H1_ANDROID 2013-09-21 13:59 404人阅读 评论(0) 收藏
转载自:http://www.apkbus.com/android-5661-1.html 摘要: Android 开发者关系团队每天都会试用无数的 App 或者受到无数的开发者发来的请求评测的 Ap ...
- Qt5 编译 & 打包依赖dll发布
十年前学C++的时候,无聊到把windows 文件夹下几乎所有的*.dll 都看过一遍.偶尔在程序运行时看到缺少 *.dll 的提示,都会直接找出来解决. 随着“开发平台”和“编译器”版本的逐年升级, ...
- java之Thread.sleep(long)与object.wait()/object.wait(long)的区别及相关概念梳理(good)
一.Thread.sleep(long)与object.wait()/object.wait(long)的区别sleep(long)与wait()/wait(long)行为上有些类似,主要区别如下:1 ...
- 号外:小雷将开发一款Java版的简易CMS系统
我的个人官网: http://FansUnion.cn 已经改版,隆重上线了,欢迎关注~持续升级中... 出于个人兴趣.技术总结.工作相关,我终于想要做一个简单的CMS系统了. 原来想研究,D ...
- 深度学习代码注解(一)—— mnistdeepauto
clear all close all %% 1:参数设置 maxepoch=10; %In the Science paper we use maxepoch=50, but it works ju ...
- HTML代码简写法:Emmet和Haml(转)
HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容.还有一种就是我今天想要介绍的方法----简写法. 常用的简写法,目前主要是Emmet和Haml ...