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实现数通设备tftp备份配置文件示例
Apr 02 Python
在Python程序中操作文件之isatty()方法的使用教程
May 24 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
python numpy数组复制使用实例解析
Jan 10 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
利用python+request通过接口实现人员通行记录上传功能
Jan 13 Python
python代码实现备忘录案例讲解
Jul 26 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
我的群发邮件程序
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
js利用与或运算符优先级实现if else条件判断表达式
2010/04/15 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
jquery图片切换插件
2015/03/16 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
Python3 处理JSON的实例详解
2017/10/29 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
Python识别处理照片中的条形码
2020/11/16 Python
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
优秀会计求职信
2014/07/04 职场文书
村党组织公开承诺书
2015/04/30 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
施工安全责任协议书
2016/03/23 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
什么是SOLID
2022/03/24 Javascript
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技