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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
浅要分析Python程序与C程序的结合使用
Apr 07 Python
Fabric 应用案例
Aug 28 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
对python 判断数字是否小于0的方法详解
Jan 26 Python
如何用Python做一个微信机器人自动拉群
Jul 03 Python
如何使用python操作vmware
Jul 27 Python
Django 多对多字段的更新和插入数据实例
Mar 31 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
Python实现寻找回文数字过程解析
Jun 09 Python
python中子类与父类的关系基础知识点
Feb 02 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
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
php常用Stream函数集介绍
2013/06/24 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
php session的锁和并发
2016/01/22 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
春季运动会广播稿大全
2014/02/19 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
Python import模块的缓存问题解决方案
2021/06/02 Python
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫