#-*- 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)的更多相关文章

  1. python下载图片超时的调查

    在使用python3下载图片时, 常用的方法有urlretrieve和requests两种, 不管哪种方法在网速极慢的情况下, 会出现图片下载卡住现象.那如何解决呢? 小编根据网上提供的资料测试了几种 ...

  2. Python下载图片并保存本地的两种方式

    一:使用Python中的urllib类中的urlretrieve()函数,直接从网上下载资源到本地,具体代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...

  3. python 下载图片的方法

    a='http://wx1.sinaimg.cn/mw600/006HOayNgy1fqjdi2nxohj32pw3o8x6s.jpg'  #图片下载地址   ( 这里改成 文件txt地址)w='/U ...

  4. 使用python下载图片(福利)

    刚学python 没多久, 代码处处是漏洞,也希望各位大佬理解一下 爬出来的图片... 使用的 是 https://www.tianapi.com/  接口下的 美女图片... (需要自己注册一个账号 ...

  5. Python下载图片小程序

    欢迎大侠们指正批评 思路: 1.引入相关的python文件(import re  import urllib) 2.读取对应网页的html文件(使用 urllib) def getHtml(url): ...

  6. Python 下载图片的几种方法

    import osos.makedirs('./image/', exist_ok=True)IMAGE_URL = "http://image.nationalgeographic.com ...

  7. python下载图片(3)

    # -*- coding: utf-8 -*-"""some function by metaphy,2007-04-03,copyleftversion 0.2&quo ...

  8. python下载图片

    import re import  urllib.request   def getHtml(url): page = urllib.request.urlopen(url) html = page. ...

  9. python 下载图片

    import requests from PIL import Image from io import BytesIO url = 'http://image2.buslive.cn/shp/upl ...

随机推荐

  1. 美轮美奂宇宙星空制作神器Spacescape

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/46444569 作者:car ...

  2. spring 输出mvc

    http://flysnowxf.iteye.com/blog/1187580 http://viralpatel.net/blogs/spring-requestheader-example/ 基于 ...

  3. [Angular] Updating and resetting FormGroups and FormControls

    If you want to reset or just update field value, you can do: reset: reset({key: value, k2:v2}); upda ...

  4. J2EE学习篇之--JQuery技术具体解释

    前面我们解说了的J2EE的技术都是服务端的技术,以下我们来看一下前端的一些开发技术,这一篇我们来看一下jQuery技术 简单介绍: jQuery由美国人John Resig创建,至今已吸引了来自世界各 ...

  5. VC++中用API调用对话框资源

    关键技术: 对于资源的载入须要几个API函数,以下分别介绍这几个API函数. a) FindResource 用来在一个指定的模块中定位所指的资源,语法例如以下: HRSRC FindResource ...

  6. Oracle数据库零散知识06 -- Package的定义与简单触发器

    CREATE OR REPLACE PACKAGE pak_02 IS--包头 --这里可定义公共参数 FUNCTION fun_01 RETURN NUMBER; PROCEDURE pro_01 ...

  7. 【24.58%】【BZOJ 1001】狼抓兔子

    Time Limit: 15 Sec Memory Limit: 162 MB Submit: 19227 Solved: 4726 [Submit][Status][Discuss] Descrip ...

  8. 【37.00%】【vijos p1425】子串清除

    P1425子串清除Accepted 标签:[显示标签] 描述 我们定义字符串A是字符串B的子串当且仅当我们能在B串中找到A串.现在给你一个字符串A,和另外一个字符串B,要你每次从B串中从左至右找第一个 ...

  9. Windows下curl使用

    一.简介 在上一篇中我们涉及到了一个在Ubuntu下使用的curl命令,而且使用这个命令来模拟server的功能来向谷歌的C2DMserver发送数据. 以下简单的来说下在Windows下相同的使用c ...

  10. Less小总结

      = 导航   顶部 变量 混合 继承 函数   顶部 变量 混合 继承 函数 Less 是一个Css 预编译器,意思指的是它可以扩展Css语言,添加功能如允许变量(variables),混合(mi ...