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之有容乃大的list(4)
Sep 28 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
Python 专题一 函数的基础知识
Mar 16 Python
python 计算两个日期相差多少个月实例代码
May 24 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
python跳出双层for循环的解决方法
Jun 24 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
python使用Geany编辑器配置方法
Feb 21 Python
如何卸载python插件
Jul 08 Python
python openCV自制绘画板
Oct 27 Python
PyTorch梯度裁剪避免训练loss nan的操作
May 24 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初学入门
2006/11/19 PHP
php数组一对一替换实现代码
2012/08/31 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
JS 统计时间
2021/03/09 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
python opencv摄像头的简单应用
2019/06/06 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
详解python中*号的用法
2019/10/21 Python
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
北承题目(C++)
2012/05/16 面试题
公司前台接待岗位职责
2013/12/03 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
2014年教研组工作总结
2014/11/26 职场文书
刮痧观后感
2015/06/05 职场文书
学生病假条范文
2015/08/17 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
SQL SERVER中的流程控制语句
2022/05/25 SQL Server
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang