python小程序实现Pic2Icon转换
文章目录
前言
该程序用来将普通格式的图片转换成*.ico系统可用图标文件。你可以将转换出的图标用于设置文件夹图标、快捷方式图标、程序图标等其他用途。
做程序的契机是前两天在用pipinstaller做python软件的时候发现一个小问题,
pipinstaller命令有一个参数:-i +icon图片路径
可以指定打包制成的*.exe系统执行文件的图标显示,但是这个icon图片的格式只能是*.ico。如果需要自定义一张图片作为程序的图标,可能就需要自己找图片转icon的网站进行转换。度娘提供的前几个网站着实不太行,分辨率、形变度感人。
于是估摸着自己写个小程序实现图片的转化。
提示:
本文第一部分是软件使用步骤的描述,软件已经打包成可执行程序发布在Github上,不需要用户拥有python和相关的模块。
GitHub相关项目release链接
本文第二部分是代码的说明,包括作者写该代码的一些经历。因为相关的文章比较少而且有很多都过时了,所以这次的编写还是很费精力的,把过程写出来也比较有趣。
一、程序使用步骤
程序下载地址https://github.com/NNUwdl/Pic2Icon/releases/tag/0.1_Version
1.双击打开程序,等待命令行弹出提示信息。
2.将所要转换的图片的文件拖入命令框后按下回车,等待程序执行完毕。
3.程序会将icon图标输出到图片所在目录的Output_Icon文件夹下。
简单介绍下如何改变文件夹、快捷方式的图标:1.右键打开文件夹的属性 2.打开自定义选项更改文件夹的图标 3.在弹出的对话框中选择"浏览",选择需要替换成的图片,再点击应用就可以了。
二、代码说明
源代码展示
1.导入库
这里主要用到模块的是numpy、pillow、opencv和os:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/11/3 1:08
# @Author : Xilun Wu
# @email : nnuwxl@gmail.com
# @File : Pic2Icon.py
import os
from PIL import Image
import numpy as np
import cv2
import sys
import time
class Picture:
def __init__(self, file):
self.ext = ['jpg', 'jpeg', 'png']
self.files = [file]
self.savepath = ""
def handle_picture(self, file):
print("Converting to four channel RGBA images...")
time.sleep(0.5)
img = Image.open(file).convert('RGBA')
width = img.size[0]
height = img.size[1]
x = width / height
matrix = np.asarray(img)
print("The image resolution is being sampled at 2048x2048 size...")
time.sleep(0.5)
if width >= height:
matrix = cv2.resize(matrix, (2048, int(2048 / x)))
m = np.zeros((2048, 2048, 4), dtype=np.int)
a = int(2048 / x)
b = int((2048 - a) / 2)
for i1 in range(2048):
for i2 in range(2048):
if i1 >= b and i1 < b + a:
m[i1][i2] = m[i1][i2] + matrix[i1 - b][i2]