python如何实现内容写在图片上


Posted in Python onMarch 23, 2018

本文实例为大家分享了python将内容写在图片上的具体代码,供大家参考,具体内容如下

# -*- coding: utf-8 -*-
# Created on 2018/3/20
import base64
import random
import os
import sys
import time

from PIL import Image, ImageFont, ImageDraw

reload(sys)
sys.setdefaultencoding('utf8')

BASE_PATH = "E:\\MyWork\\qingwa\\5\\" # 底图所在路径
TMP_PATH = "E:\\MyWork\\qingwa\\5\\tmp\\" # 生成图片缓存路径
font_size = 35


# 216 194 119

class MyCar:

 def __init__(self, name):
  self.name = name
  self.name_append = "的气质适合开"
  if not os.path.exists(TMP_PATH):
   os.mkdir(TMP_PATH)
  self.end_path = TMP_PATH + str(int(time.time())) + str(random.randint(100, 999)) + ".png" # 图片处理完之后保存的文件名
  self.data = "" # base64数据初始化
  self.pic_handle()
  self.base_64()

 def base_64(self):
  """
  将图片读成base64的格式,返回给移动端渲染
  :return:
  """
  res = open(self.end_path, 'rb')
  base64_data = base64.b64encode(res.read())
  res.close()
  d = {
   'image': 'data:image/jpg;base64,' + base64_data
  }
  self.data = d

 def pic_handle(self):
  # 底图路径
  img_path = BASE_PATH + str(random.randint(1, 8)) + ".jpg"
  # 底图的操作对象
  font_img = Image.open(img_path).convert("RGBA")
  # 即将在该底图上写字
  draw = ImageDraw.Draw(font_img)
  # 画笔
  name_font = ImageFont.truetype("wryh.TTF", size=35)
  # 即将写的字
  name = self.name + self.name_append
  # 底图的宽高
  w, h = font_img.size
  # 写在底图上的区域,计算字符串的长度,让它宽度居中(高度居中 同理)
  # name_loaction分别指宽高,图片左上角为(0,0)坐标
  # 写字,fill为字体颜色,RGB值
  # try except 避免字符串编码的问题(unicode编码 再次转换会报错)
  try:
   name_location = (((w - len(unicode(name, "UTF-8")) * font_size) / 2), 76)
   draw.text(name_location, unicode(name, "UTF-8"), fill=(216, 194, 119), font=name_font)
  except BaseException as e:
   print e.message
   name_location = (((w - len(name) * font_size) / 2), 76)
   draw.text(name_location, name, fill=(216, 194, 119), font=name_font)
  print self.end_path
  # 保存处理好的图片
  font_img.save(self.end_path)
  # 显示图片
  font_img.show()

 def end_data(self):
  return self.data


if __name__ == '__main__':
 my_car = MyCar("测试")
 return_data = my_car.end_data()
 print type(return_data)

效果图

python如何实现内容写在图片上

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python学习数据结构实例代码
May 11 Python
Python使用cookielib模块操作cookie的实例教程
Jul 12 Python
python使用fork实现守护进程的方法
Nov 16 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
基于Python的PIL库学习详解
May 10 Python
Python socket模块ftp传输文件过程解析
Nov 05 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
基于python plotly交互式图表大全
Dec 07 Python
np.random.seed() 的使用详解
Jan 14 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
Python实现的自定义多线程多进程类示例
Mar 23 #Python
python爬取各类文档方法归类汇总
Mar 22 #Python
关于Python正则表达式 findall函数问题详解
Mar 22 #Python
Django自定义过滤器定义与用法示例
Mar 22 #Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 #Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 #Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 #Python
You might like
用PHP实现WEB动态网页静态
2006/10/09 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
探讨js中的双感叹号判断
2013/11/11 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
python对html代码进行escape编码的方法
2015/05/04 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
Django在win10下的安装并创建工程
2017/11/20 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
django 多数据库及分库实现方式
2020/04/01 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
python中K-means算法基础知识点
2021/01/25 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
银行柜员应聘推荐信范文
2013/11/24 职场文书
中学生班主任评语
2014/01/30 职场文书
小学安全教育材料
2014/02/17 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
应届大学生求职信
2014/07/20 职场文书
教师节座谈会主持词
2015/07/03 职场文书
2016新年年会主持词
2015/07/06 职场文书
Python提取PDF指定内容并生成新文件
2021/06/09 Python