PNG轉ico圖標(支持圓角矩形/方形+透明背景)Python腳本 - 隨筆

摘要

在網站開發或應用程序設計中,常需將高品質PNG圖像轉換為ICO格式圖標。本文提供一份基于Pillow庫實現的,能夠完美保留透明背景且支持導出圓角矩形/方形圖標的格式轉換腳本。

源碼示例

圓角方形

from PIL import Image, ImageDraw, ImageOpsdef create_rounded_png(image_path, output_path, size, corner_radius):"""將指定的圖片文件轉換為n*n的圓角PNG圖片。:param image_path: 輸入圖片文件的路徑:param output_path: 輸出PNG文件的路徑:param size: 圖標的大小,n*n:param corner_radius: 圓角的半徑"""with Image.open(image_path) as img:# 調整圖片大小到n*nresized_img = img.resize((size, size), Image.ANTIALIAS)# 創建一個與原圖大小相同的透明背景圖片用于繪制圓角蒙版mask = Image.new('L', (size, size), 0)draw = ImageDraw.Draw(mask)# 繪制圓角矩形蒙版draw.rounded_rectangle([(0, 0), (size - 1, size - 1)], corner_radius, fill=255)# 應用圓角蒙版到原圖上rounded_img = ImageOps.fit(resized_img, mask.size, centering=(0.5, 0.5))rounded_img.putalpha(mask)# 保存為PNG文件rounded_img.save(output_path)# 示例用法
create_rounded_png('path/to/your/PNG_img.png', 'path/to/your/ico_file.ico', 512, 69)

任意 寬×高 圓角矩形

from PIL import Image, ImageDraw, ImageOpsdef create_rounded_icon(image_path, output_path, size, corner_radius):"""將指定的圖片文件轉換為指定尺寸的圓角矩形ICO圖標。:param image_path: 輸入圖片文件的路徑:param output_path: 輸出ICO文件的路徑:param size: 圖標的大小,格式為(width, height):param corner_radius: 圓角的半徑"""with Image.open(image_path) as img:# 調整圖片大小到指定尺寸resized_img = img.resize(size, Image.ANTIALIAS)# 創建一個與原圖大小相同的透明背景圖片用于繪制圓角蒙版mask = Image.new('L', size, 0)draw = ImageDraw.Draw(mask)# 繪制圓角矩形蒙版draw.rounded_rectangle([(0, 0), (size[0] - 1, size[1] - 1)], corner_radius, fill=255)# 應用圓角蒙版到原圖上rounded_img = ImageOps.fit(resized_img, mask.size, centering=(0.5, 0.5))rounded_img.putalpha(mask)# 保存為ICO文件rounded_img.save(output_path, format='ICO')# 示例用法
create_rounded_icon('path/to/your/PNG_img.png', 'path/to/your/rounded_icon.ico', (512, 256), 69)

實際操作中可根據自己的需求調整size, corner_radius等參數,改變圖標和蒙版的形狀和位置等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80748.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80748.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80748.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在線SQL轉ER圖工具

在線SQL轉ER圖網站 在數據庫設計、軟件開發或學術研究中,ER圖(實體-關系圖) 是展示數據庫結構的重要工具。然而,手動繪制ER圖不僅耗時費力,還容易出錯。今天,我將為大家推薦一款非常實用的在線工具——SQL…

繪制時間對應的數據曲線

頭文件#pragma once #include "ChartControl.h" #include <vector> #include "DBOperate.h&

【挑戰項目】 --- 微服務編程測評系統(在線OJ系統)(二)

三十二、Swagger介紹&使用 官網:https://swagger.io/ 什么是swagger Swagger是一個接口文檔生成工具,它可以幫助開發者自動生成接口文檔。當項目的接口發生變更時,Swagger可以實時更新文檔,確保文檔的準確性和時效性。Swagger還內置了測試功能,開發者可以直接在文檔中…

人事管理系統總結

1.Maven 創建 Spring Boot 項目&#xff1a; 主要使用 Maven 創建 Spring Boot 項目、配置 MySQL 數據庫、回顧 Spring Boot 分層架構、使用 MyBatis 逆向工程生成代碼及整合測試項目等內容&#xff0c;具體如下&#xff1a; Maven 創建 Spring Boot 項目 可通過 IDEA 直接創…

SpringBoot--springboot簡述及快速入門

spring Boot是spring提供的一個子項目&#xff0c;用于快速構建spring應用程序 傳統方式&#xff1a; 在眾多子項目中&#xff0c;spring framework項目為核心子項目&#xff0c;提供了核心的功能&#xff0c;其他的子項目都需要依賴于spring framework&#xff0c;在我們實際…

INT202 Complexity of Algroithms 算法的復雜度 Pt.7 NP-Completeness NP完全性

文章目錄 1.P與NP問題1.1 計算上難以解決的問題&#xff08;Hard Computational Problems&#xff09;1.2 決策問題和優化問題&#xff08;Decision/Optimization problems&#xff09;1.3 計算問題的正式定義1.4 復雜性類1.4.1 復雜性類 P P P1.4.2 證明&#xff08;Certifica…

websocketpp 安裝及使用

介紹 WebSocket 是從 HTML5 開始支持的一種網頁端和服務端保持長連接的消息推送機制。 傳統的 web 程序都是屬于 "一問一答" 的形式&#xff0c;即客戶端給服務器發送了一個 HTTP 請求&#xff0c;服務器給客戶端返回一個 HTTP 響應。這種情況下服務器是屬于被動…

Android NDK 高版本交叉編譯:為何無需配置 FLAGS 和 INCLUDES

引言&#xff1a;NDK 交叉編譯的演進 Android NDK&#xff08;Native Development Kit&#xff09;是開發高性能C/C代碼的核心工具鏈&#xff0c;而交叉編譯&#xff08;在x86主機上生成ARM架構代碼&#xff09;一直是NDK的核心功能。過去&#xff0c;開發者需要手動配置大量編…

AI+可視化:數據呈現的未來形態

當AI生成的圖表開始自動“美化”數據&#xff0c;當動態可視化報告能像人類一樣“講故事”&#xff0c;當你的眼球運動直接決定數據呈現方式——數據可視化的未來形態&#xff0c;正在撕裂傳統認知。某車企用AI生成的3D可視化方案&#xff0c;讓設計師集體失業&#xff1b;某醫…

基于Flink的用戶畫像 OLAP 實時數倉統計分析

1.基于Flink的用戶畫像 OLAP 實時數倉統計分析 數據源是來自業務系統的T日數據&#xff0c;利用kakfa進行同步 拼接多個事實表形成大寬表&#xff0c;優化多流Join方式&#xff0c;抽取主鍵和外鍵形成主外鍵前置層&#xff0c;抽取外鍵和其余內容形成融合層&#xff0c;將4次事…

Java游戲服務器開發流水賬(7)網絡通信簡介

在 Java 游戲服務器開發中&#xff0c;網絡通訊是核心組成部分&#xff0c;它主要負責客戶端與服務器之間的數據交換。 一、網絡通訊基礎 1. 網絡模型 C/S 架構&#xff1a;游戲服務器采用客戶端 / 服務器模式&#xff0c;客戶端向服務器發送請求&#xff0c;服務器處理請求…

使用ADB命令操作Android的apk/aab包

keystore文件轉換jks文件 操作步驟&#xff1a; 步驟1&#xff0c;生成P12文件&#xff1a; keytool -importkeystore -srckeystore [文件名].keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore [文件名].p12 步驟2&#xff0c;生成jks文件&#xff1a; keytool…

圖文展示HDFS、YARN、MapReduce三者關系

MapReduce架構概述 MapReduce將計算過程分為兩個階段&#xff1a;Map和Reduce &#xff08;1&#xff09;Map階段并行處理輸入數據 &#xff08;2&#xff09;Reduce階段對Map結果進行匯總 HDFS、YARN、MapReduce三者關系

DL00219-基于深度學習的水稻病害檢測系統含源碼

&#x1f33e; 基于深度學習的水稻病害檢測系統 — 智能農業的未來&#xff0c;守護農田的每一寸土地&#xff01; &#x1f69c; 完整系統獲取見文末 水稻病害檢測&#xff0c;一直是農業領域的一大難題。傳統的人工檢測不僅耗時耗力&#xff0c;還容易因經驗不足導致漏檢或誤…

github 上的 CI/CD 的嘗試

效果 步驟 新建倉庫設置倉庫的 page 新建一個 vite 的項目&#xff0c;改一下 vite.config.js 中的 base 工作流 在項目的根目錄下新建一個 .github/workflows/ci.yml 文件&#xff0c;然后編輯一下內容 name: Build & Deploy Vue 3 Appon:push:branches: [main]permi…

鴻蒙5.0項目開發——鴻蒙天氣項目的實現(介紹)

【高心星出品】 文章目錄 項目簡介&#xff1a;項目運行效果圖&#xff1a;主要功能&#xff1a;使用的技能點&#xff1a;開發環境&#xff1a; 項目簡介&#xff1a; 這是一個基于鴻蒙系統&#xff08;HarmonyOS&#xff09;開發的天氣應用&#xff0c;采用 ArkTS 語言開發&…

SpringCloud之Eureka基礎認識-服務注冊中心

0、認識Eureka Eureka 是 Netflix 開源的服務發現組件&#xff0c;后來被集成到 Spring Cloud 生態中&#xff0c;成為 Spring Cloud Netflix 的核心模塊之一。它主要用于解決分布式系統中??服務注冊與發現??的問題。 Eureka Server 有必要的話&#xff0c;也可以做成集群…

【氮化鎵】電子輻照下溫度對GaN位移閾能的影響

2024年,華東師范大學的彭勝國等人基于從頭算分子動力學(AIMD)方法,研究了低能電子束輻照下溫度對氮化鎵(GaN)位移閾能(TDE)的影響。實驗結果表明,在初始動能40至80 eV的范圍內,鎵(Ga)和氮(N)原子作為初級擊出原子(PKAs)引發的位移對溫度呈現不同的敏感性:Ga 的…

Java 中的數據類型誤導點!!!

在 Java 中&#xff0c;數據類型分為兩大類&#xff1a;基本類型&#xff08;Primitive Types&#xff09; 和 引用類型&#xff08;Reference Types&#xff09;。它們的存儲方式和行為完全不同。 1. 基本類型 Java 有 8 種基本數據類型&#xff0c;它們直接存儲值&#xff…

二次封裝 el-dialog 組件:打造更靈活的對話框解決方案

文章目錄 引言為什么需要二次封裝&#xff1f;封裝思路代碼實現1. 基礎封裝組件 (Dialog.vue)2. Vue中引入使用示例 封裝后的優勢進階優化建議 總結 引言 在 Vue 項目中&#xff0c;Element UI 的 el-dialog 是一個非常實用的對話框組件。但在實際開發中&#xff0c;我們經常會…