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笔记(叁)继续学习
Oct 24 Python
python通过定义一个类实例作为ftp回调方法
May 04 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
举例讲解Python中的Null模式与桥接模式编程
Feb 02 Python
python3实现猜数字游戏
Dec 07 Python
使用coverage统计python web项目代码覆盖率的方法详解
Aug 05 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
python实现读取类别频数数据画水平条形图案例
Apr 24 Python
python高级特性简介
Aug 13 Python
python 实现图片批量压缩的示例
Dec 18 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
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
Vue核心概念Action的总结
2019/01/18 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Python中对列表排序实例
2015/01/04 Python
python入门教程之识别验证码
2017/03/04 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
简单了解python的一些位运算技巧
2019/07/13 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
机械制造专业毕业生求职信
2014/03/02 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
神农溪导游词
2015/02/11 职场文书
任命书格式范文
2015/09/22 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js