Un número de público inútil cubierta Constructor

Un número de público inútil cubierta Constructor

Para las personas sin ningún tipo de células artísticas, el más problemático para escribir número público es equivalente a un artículo de portada o malo mapa electoral, el mapa seleccionado que, los números públicos este 2.35: 1 relación implicarían recortada extraño problema ...

Así que tal vez usted ha descubierto, la tapa de mi artículo es simple. Pura imagen evita los problemas recortadas, esas cosas se convierten en corriente clara coqueta Biao sentido del diseño y la estética de

Pero las imágenes en color solamente sólidos, aparentemente sin alma.

Hoy en día hacer es dar la limpieza como la cubierta en el alma.

Un diagrama de clases muy no estándar

Aquí está un ejemplo de un diagrama de clases no estándar, por favor, no aprenden.

generación de la cubierta
generación de la cubierta
módulo de descodificación
módulo de descodificación

Resumir las ideas

De hecho, la idea es muy simple

  • La obtención de un texto, la secuencia decodificada binaria de UTF-8
  • La cadena binaria decodificada MD5 para obtener un resumen de 128 bits
  • Por random.randomint () 3 bytes seleccionados al azar de color en RGB hacen esto cadena binaria de 128 bits.
  • Generar un 253 * 100 imágenes guardadas localmente. MongoDB mientras que la información almacenada en la base de datos.

El denominado algoritmo de decodificación aún más simple, conocida MD5 no es reversible ... además de que tenía que tomar tres bytes aleatorios, por lo que quiero ser decodificado por el color no es posible.

Pero !!! Tengo una manera maravillosa ... porque antes de que la información relevante se ha guardado en la base de datos, por lo que recuperar los valores de color RGB directamente en la base de datos en él. (No puedo ser demasiado inteligente)

resumen conocimiento

Nota a la seca !!!

Procesar la entrada de

Introduzca el procesamiento de contenido es relativamente simple falta de

    def encode(self):
return hashlib.md5(self.raw_input_str.encode('utf-8')).hexdigest()

def color_generator(self, raw_digest):
r_index = random.randint(0, 30)
g_index = random.randint(0, 30)
b_index = random.randint(0, 30)

r_color = int(raw_digest[r_index:r_index + 2], base=16)
g_color = int(raw_digest[g_index:g_index + 2], base=16)
b_color = int(raw_digest[b_index:b_index + 2], base=16)

return r_color, g_color, b_color

Primer método de uso M5 () y el método hexdigest () para obtener el hashlib valor hash.

Luego, al cabo de tres bytes al azar, respectivamente, el color RGB para hacerlo.

Procesamiento de imágenes

Hasta ningún contacto es aproximadamente igual a este procesamiento de imágenes uno, específicamente con cargo módulo pitón de procesamiento de imagen común verificado:

  • NumPy : Esta biblioteca es una biblioteca básica para la informática científica, se utiliza principalmente para procesar N-dimensional objeto de matriz, así como algunos cálculos matemáticos básicos, tales como transformadas de Fourier, álgebra lineal se puede considerar una biblioteca de imágenes centro de tratamiento.
  • OpenCV : 一个专业的计算机视觉库. 可以用于图像视频等的处理,比如人脸识别之类...
  • PIL: Python自带的图像处理库,由于年久失修,目前处于门可罗雀的状态
  • Pillow: PIL的志愿者版本,由于PIL已经很久没有维护,功能简单而且只支持到python2.x. 所以志愿者们在PIL的基础上开发出了pillow,支持更多的功能且支持python3
  • Pillow-SIMD: PIL究极进化版,速度更快,功能更强. SIMD指的是single instruction multiple data(单指令,多数据),是一种对海量数据进行相同操作的算法. 据说速度可以媲美OpenCV

pillow是PIL的一个分支,而pillow-simd是pillow的一个分支.因为我也是第一次接触图像处理. 我发现很神奇的是 pillow的文档和pillow-simd的文档竟然是一个. 但是在安装的时候 又是两个包...没有搞明白怎么回事. 如果有大神知道的话,麻烦留言解惑.

pillow模块的基本使用

这次我采用的是Pillow,原因很简单,杀鸡焉用牛刀. 只是需要生成一个纯色的小图片而已. 安装很简单,如果使用Anaconda的话,它已经集成了pillow包. 如果使用的是纯python3的环境,pip install pillow就可以了.

在引入包的时候需要注意. 虽然我们用的是pillow,但是它的包名依旧是PIL. 所以在引入包的时候需要注意.

from PIL import Image

这次使用的是最基础的方法. 主要就是创建图像. 相关方法的具体文档,请查阅这里

  • PIL.Image.open(fp, mode='r')

    • 作用: 打开一个图像文件.
    • 参数:
      • fp:文件句柄或者文件路径
      • mode: 和文件操作时候的mode一样,r表示只读,w表示只写. w+表示读写
    • 返回值: Image对象
  • PIL.Image.new(mode, size, color=0)

    • 作用: 创建一个Image对象.
    • 参数:
      • mode:图像模式,具体参考文档.
      • size:图像大小
      • color:颜色
    • 返回值: Image对象
  • Image.save(fp, format=None, **params)

    • 作用: 保存图像到文件
  • Image.show(title=None, command=None)

    • 作用: 调用本地看图软件打开图像
  • Image.close()

这里要说的是,既然有open方法也有close方法. 这个Image对象也是支持with上下文管理器的.

所以打开一个图像的时候可以直接使用with...as...语法

pillow模块的简单示例

打开一个图片文件并显示

def show_img()
with Image.open(self.file_path) as img:

img.show()
return img

生成一个新的纯色图片并保存到文件

def new_a_image():
img = Image.new('RGB',(253,100),(240,233,204))
img.save('demo.jpg')

获取某个像素点的RGB值

    def get_color_from_file(self):
with Image.open(self.file_path) as img:
color = img.getpixel((100, 100))
return color

mongoDB数据库基本操作

MongoDB是一款开源的,高性能的非关系型数据库. 也就是传说中的NoSQL数据库中的热门款. 主要以key-value为作为存储结构.

introducción específica se puede encontrar en esta entrada del blog: MongoDB Introducción

He aquí una breve operación de MongoDB.

MongoDB instalación y Robo 3T de instalación, etc., que han escrito un pequeño libro. libre de escribir de nuevo a explicar hoy brevemente el funcionamiento básico de MongoDB.

En Python, estamos usando " pymongo " Este módulo funciona la base de datos MongoDB.

El uso básico es simple, poner una pequeña pieza de código se podría entender fácilmente.

import pymongo

MONGO_URL = 'localhost'
MONGO_DB = 'wmcoding_cover'
MONGO_TABLE = 'cover'


# 声明连接客户端
client = pymongo.MongoClient(MONGO_URL, connect=False)
# 声明要操作的数据库
db = client[MONGO_DB]

# 保存数据到mongoDB. 直接使用insert_one()方法就可以了
def save_to_mongo(self, digest, color, feeling, file_path):
res = {
'digest': digest,
'color': color,
'dscp': feeling,
'path': file_path
}

if db[MONGO_TABLE].insert_one(res):
print('cover save to database successful!')
return True
return False

# 同样检索的话,使用find_one()方法,获取一条记录. 该记录会以列表的形式展现
def decode(self):
if self.file_path:
self.color = self.get_color_from_file()
res = db[MONGO_TABLE].find_one({'color': list(self.color)})
return res['dscp']

Más operaciones se pueden encontrar en el artículo mongodb Cui Gangster: operando Python MongoDB vistazo a éste es lo suficientemente

Código se ha cargado en GitHub, el interés se puede utilizar para ver. Cubierta del generador

después de las palabras

Ahora esta versión es relativamente simple.

Próximo plan es darle a agregar una interfaz gráfica de usuario.

El siguiente paso del plan se cambia a la versión en línea y con el número de micro-canales públicos de acoplamiento.

Después de arte de la cubierta para lograr subir cada número de la preocupación pública de los usuarios puede ver el "elegante y lleno de rima," detrás de la cubierta del texto ...

Supongo que te gusta

Origin www.cnblogs.com/thecatcher/p/12500831.html
Recomendado
Clasificación