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异常处理总结
Aug 15 Python
Python安装第三方库的3种方法
Jun 21 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
python字符串中的单双引
Feb 16 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
python中的变量如何开辟内存
Jun 26 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
python多进程并发demo实例解析
Dec 13 Python
python 自动刷新网页的两种方法
Apr 20 Python
openstack中的rpc远程调用的方法
Jul 09 Python
Python 视频画质增强
Apr 28 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 fsockopen伪造post与get方法的详解
2013/06/14 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
Python日期操作学习笔记
2008/10/07 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
Python实现快速多线程ping的方法
2015/07/15 Python
Python性能提升之延迟初始化
2016/12/04 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
python去除扩展名的实例讲解
2018/04/23 Python
Python实现某论坛自动签到功能
2019/08/20 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
校园餐饮创业计划书
2014/01/10 职场文书
电工工作职责范本
2014/02/22 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
迟到检讨书
2015/01/26 职场文书
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android