python实现任意url转存为图片
关键词:python、前后端分离、url返回图片
现在前后端分离的情况,比较常见,我一个Django框架后端,要为安卓、IOS、小程序、网站、手机H5网页等好多地方提供接口。
有个需求是这样的:把数据库里面的一个对象,按照一定的格式生成图片或者pdf。
我的思路如下:
1、生成Django模板网页;
2、该网页转图片;
第一步就是咱们的本职,不多描述了,主要看看第二步如何实现。
在网上找了好多的工具之类的东西,最终选择的是wkhtmltox,因为他适应多平台
链接:点击这里跳转去下载软件的页面
适应的系统:
Downloads选择右边的,都是64位就行,相信没人用32位的了。
我的电脑是deepin系统(Debian的儿子,Ubuntu的弟弟)版本15.6,公司服务器是CentOS 7,一切安装使用均正常。
我的deepin用户界面挺友好的,下载下来.deb包,傻瓜式安装;
服务器的CentOS,下载的.rpm包,需要使用rpm命令安装,不会的百度一下,也是秒安,另外CentOS需要安装一个汉字字体(不会的,百度“centos 安装 字体”,不用安装太多,安装一两个就够了,例如这个博客的安装字体教程,写的不错,很详细),(我安装的字体是simsun.ttf和simhei.ttf,百度之后下载的),否则url转存为图片时,汉字没办法正确显示。
# 简单使用
# 命令名称 url 图片名字
wkhtmltoimage www.bing.com bing.png
# 查询命令
rpm -qal | grep wkhtmltox
ls -lha | grep wkh
# 查找命令路径
which wkhtmltoimage
which wkhtmltopdf
# 创建软连接
sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin/wkhtmltoimage
sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf
然后就可以使用方便的python,调用系统终端命令,将url转换为图片:
class get_img_from_url():def __init__(self,req_url,file_name):# 图片保存路径拼接self.save_path = local_settings.MEDIA_ROOT + "/url_trans_img/"file_name += ".png"self.save_path += file_name# python调用终端命令import subprocessself.handle_result = subprocess.getstatusoutput("wkhtmltoimage {} {}".format(req_url, self.save_path))# print(a)# (0, '运行结果字符串')self.img_url = local_settings.MEDIA_URL + "url_trans_img/" + file_name# print(a[-1].split())# print(a[-1].split()[-1])# 最后一行是“Done”,表示成功了self.msg = self.handle_result[-1]if self.handle_result[-1].split()[-1] == "Done":self.result_x = Trueelse:self.result_x = False
然后就可以在views.py视图类里面,调用这个方法了:
# 继承的视图类,这个你随便放一个合适的视图类就行
class GetImgFromUrl(AllowAnyView):"""传url获取图片"""# 这个是swagger的代码,可以不用schema = AutoSchema(manual_fields=[coreapi.Field("req_url",location="query",required=True,description="需要获取图片的url",),])# get方法def get(self, request):# 参数接收req_url = request.query_params.get("req_url", "")# 文件名生成import randomnum = random.randint(10000,99999)timestamp = time.time()file_name = str(num) + "_" + str(timestamp)# 方法调用result_obj = get_img_from_url(req_url, file_name)# 结果判断if result_obj.result_x: # 如果成功了,图片的url返回给前端return success(dict(save_path=result_obj.save_path,msg=result_obj.msg,img_url=result_obj.img_url,))else: # 如果失败了return fail(1,result_obj.msg) # 这是一个自定义的 错误时返回的 响应 对象
urls.py
url(r'^get_img_from_url$', views.GetImgFromUrl.as_view()),# 传url获取图片
然后大功告成!
别忘了写个定时任务crontab,定时删除一下保存的图片,删除你保存的那个路径下、以.png结尾的文件就行(不会的自行百度)。
python实现任意url转存为图片相关推荐
- 用Python将PDF文件转存为图片
案例 因工作中的某些奇葩要求,需要将PDF文件的每页内容转存成按顺序编号的图片.用第三方软件或者在线转换也可以,但批量操作还是Python方便,所谓搞定办公自动化,Python出山,一统天下:Pyth ...
- python 从网络URL读取图片并直接处理的代码
如下代码段是关于python 从网络URL读取图片并直接处理的代码. import urllib2 import Image import cStringIO def ImageScale(url,s ...
- python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片
本文主要为大家分享一篇Python如何实现爬取京东手机图片的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 运行环境Python3.6.4#爬取京东手机图片i ...
- python自动化办公之爬取HTML图片写入PPT实战
python自动化办公之批量图片导入PPT 昨天,大Boss找到一个网页,觉得里面的图片内容特别好,想把它下载下来作为学习资料,整理整理教导下属.但是,手动一张一张的保存图片太慢了,问我可不可以下载下 ...
- java网页快照_java网页快照-网页转存为图片
java网页快照-网页转存为图片 个人觉得免费的java实现方式,最方便的网页快照生成方式.可以生成大型网页的快照.非常棒! 使用代码前需要导入 jar包.需要三个jar包 :swt-3.6M3-wi ...
- Python学习笔记:爬取网页图片
Python学习笔记:爬取网页图片 上次我们利用requests与BeautifulSoup爬取了豆瓣<下町火箭>短评,这次我们来学习爬取网页图片. 比如想爬取下面这张网页的所有图片.网址 ...
- Python爬取的数据存为json文件,并读取
Python爬取的数据存为json文件,并读取 import requests import time from lxml import etree import jsondef json_data_ ...
- python下载博文中微博图床图片
python下载博文中微博图床图片 前言 昨天突然发现博客中的许多图片都挂了(会尽neng快tuo修jiu复tuo),今天看了下,发现很多人都挂了,嗯没错就是新浪搞的鬼了,目前是对referrer进行 ...
- Python利用bs4批量抓取网页图片并下载保存至本地
Python利用bs4批量抓取网页图片并下载保存至本地 使用bs4抓取网页图片,bs4解析比较简单,需要预先了解一些html知识,bs4的逻辑简单,编写难度较低.本例以抓取某壁纸网站中的壁纸为例.(b ...
最新文章
- rds本地库到rds恢复_rds数据库 恢复本地
- 【实例】销售合同VA41屏幕字段增强实例
- 如何在JSP里自定义标签
- 通过反射获取方法返回的类型
- 【kubernetes】http proxy error stream error stream ID 3 INTERNAL_ERROR
- GsonFormat的使用
- 电商销售数据分析(Python)
- TCP报文( tcp dup ack 、TCP Retransmission)
- ASP.NET商贸进销存管理系统源码(带数据库文档)源码免费分享
- 软件中断SWI的实现
- 计算广告学(Computational Advertising)概述学习
- 虚拟机下修改hosts文件
- eclipse代码补全、代码提示及防空格自动补全
- 知识付费系统源码(开源知识付费系统平台下载)
- oss图片无法在网站中显示
- 可达性分析算法与理解误区
- R安装包失败解决办法
- 基于OpenCV的AR图像合成
- 机器人跳街舞 机智过人_揭秘《机智过人》400台机器人热舞的黑科技
- 【爆肝更新】Python基础教程:第五章_Python函数