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中使用Mako模版库的简单教程
Apr 08 Python
Python使用gensim计算文档相似性
Apr 10 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 Python
Python循环结构的应用场景详解
Jul 11 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
Python如何将装饰器定义为类
Jul 30 Python
Python如何在单元测试中给对象打补丁
Aug 03 Python
Python实现LR1文法的完整实例代码
Oct 25 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函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
js中replace的用法总结
2013/12/27 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
浅谈Python中的闭包
2015/07/08 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
python Xpath语法的使用
2020/11/26 Python
卡骆驰德国官方网站:Crocs德国
2019/03/29 全球购物
计算机专业学生求职信分享
2013/12/15 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
最感人的道歉情书
2015/05/12 职场文书
病假证明模板
2015/06/19 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
Mysql Online DDL的使用详解
2021/05/20 MySQL
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL