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 18 Python
Python的Urllib库的基本使用教程
Apr 30 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
python实现kNN算法
Dec 20 Python
微信跳一跳python代码实现
Jan 05 Python
Python3实现的字典遍历操作详解
Apr 18 Python
Python根据成绩分析系统浅析
Feb 11 Python
Python random库使用方法及异常处理方案
Mar 02 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
python爬取招聘要求等信息实例
Nov 20 Python
python 爬取吉首大学网站成绩单
Jun 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
PHP自动更新新闻DIY
2006/10/09 PHP
php&java(二)
2006/10/09 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
利用Python实现命令行版的火车票查看器
2016/08/05 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
制药工程专业应届生求职信
2013/09/24 职场文书
毕业生求职自荐信怎么写
2014/01/08 职场文书
政府采购方案
2014/06/12 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
学生通报表扬范文
2015/05/04 职场文书
任命书格式模板
2015/09/22 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
Python3.10的一些新特性原理分析
2021/09/15 Python
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js