关键词: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转存为图片相关推荐

  1. 用Python将PDF文件转存为图片

    案例 因工作中的某些奇葩要求,需要将PDF文件的每页内容转存成按顺序编号的图片.用第三方软件或者在线转换也可以,但批量操作还是Python方便,所谓搞定办公自动化,Python出山,一统天下:Pyth ...

  2. python 从网络URL读取图片并直接处理的代码

    如下代码段是关于python 从网络URL读取图片并直接处理的代码. import urllib2 import Image import cStringIO def ImageScale(url,s ...

  3. python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片

    本文主要为大家分享一篇Python如何实现爬取京东手机图片的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 运行环境Python3.6.4#爬取京东手机图片i ...

  4. python自动化办公之爬取HTML图片写入PPT实战

    python自动化办公之批量图片导入PPT 昨天,大Boss找到一个网页,觉得里面的图片内容特别好,想把它下载下来作为学习资料,整理整理教导下属.但是,手动一张一张的保存图片太慢了,问我可不可以下载下 ...

  5. java网页快照_java网页快照-网页转存为图片

    java网页快照-网页转存为图片 个人觉得免费的java实现方式,最方便的网页快照生成方式.可以生成大型网页的快照.非常棒! 使用代码前需要导入 jar包.需要三个jar包 :swt-3.6M3-wi ...

  6. Python学习笔记:爬取网页图片

    Python学习笔记:爬取网页图片 上次我们利用requests与BeautifulSoup爬取了豆瓣<下町火箭>短评,这次我们来学习爬取网页图片. 比如想爬取下面这张网页的所有图片.网址 ...

  7. Python爬取的数据存为json文件,并读取

    Python爬取的数据存为json文件,并读取 import requests import time from lxml import etree import jsondef json_data_ ...

  8. python下载博文中微博图床图片

    python下载博文中微博图床图片 前言 昨天突然发现博客中的许多图片都挂了(会尽neng快tuo修jiu复tuo),今天看了下,发现很多人都挂了,嗯没错就是新浪搞的鬼了,目前是对referrer进行 ...

  9. Python利用bs4批量抓取网页图片并下载保存至本地

    Python利用bs4批量抓取网页图片并下载保存至本地 使用bs4抓取网页图片,bs4解析比较简单,需要预先了解一些html知识,bs4的逻辑简单,编写难度较低.本例以抓取某壁纸网站中的壁纸为例.(b ...

最新文章

  1. rds本地库到rds恢复_rds数据库 恢复本地
  2. 【实例】销售合同VA41屏幕字段增强实例
  3. 如何在JSP里自定义标签
  4. 通过反射获取方法返回的类型
  5. 【kubernetes】http proxy error stream error stream ID 3 INTERNAL_ERROR
  6. GsonFormat的使用
  7. 电商销售数据分析(Python)
  8. TCP报文( tcp dup ack 、TCP Retransmission)
  9. ASP.NET商贸进销存管理系统源码(带数据库文档)源码免费分享
  10. 软件中断SWI的实现
  11. 计算广告学(Computational Advertising)概述学习
  12. 虚拟机下修改hosts文件
  13. eclipse代码补全、代码提示及防空格自动补全
  14. 知识付费系统源码(开源知识付费系统平台下载)
  15. oss图片无法在网站中显示
  16. 可达性分析算法与理解误区
  17. R安装包失败解决办法
  18. 基于OpenCV的AR图像合成
  19. 机器人跳街舞 机智过人_揭秘《机智过人》400台机器人热舞的黑科技
  20. 【爆肝更新】Python基础教程:第五章_Python函数

热门文章

  1. 来自Percal25号行星的哥顿人
  2. 刘晓燕《不就是语法和长难句吗》第一章个人笔记
  3. 2021年上半年总结
  4. 【01背包记录路径】东东开车了
  5. 费诺编码实验报告c语言,信息论编码实验报告费诺编码附源代码..doc
  6. Oracle的表空间、用户和模式
  7. 关于iphone、QQ通讯录、飞聊联系人排序设计的思考
  8. [散文]芒果女人(作者:毕淑敏)
  9. 我不愿当一辈子啃老族
  10. Rust 14: 文件读写