-
2022-05-16 10:31:10
1. 网站logo
favicon.ico图标是网站的缩略标志,可以显示在浏览器标签、地址栏左边和收藏夹,是展示网站个性的缩略logo标志,也可以说是网站头像
常用的favicon.ico图标有3种16×16(推荐)、32×32、48×48网页引用 <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"> <link rel="icon" href="../favicon.ico"> 在线制作ico https://www.easyicon.net/covert/
2. Java实现png转ico
pom依赖
参考 https://github.com/HuBoZhi/image4j,本地打包image4j<!--png转ico,本地打包的--> <dependency> <groupId>net.sf</groupId> <artifactId>image4j</artifactId> <version>1.0.0</version> </dependency> <!--图片缩放--> <dependency> <groupId>com.mortennobel</groupId> <artifactId>java-image-scaling</artifactId> <version>0.8.6</version> </dependency>
实体类ImageEntity
@Data public class ImageEntity { /** * 尺寸类型,16x16,32x32,48x48,64x64,128x128,256x256,512x512 */ private String size; /** * 图片类型 png,jpg */ private String imgType; }
ImageService类
package com.cmbchina.file.service; import com.cmbchina.base.exception.BizException; import com.cmbchina.file.base.ImageEntity; import com.mortennobel.imagescaling.AdvancedResizeOp; import com.mortennobel.imagescaling.ResampleOp; import lombok.extern.slf4j.Slf4j; import net.sf.image4j.use.Image4j; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.SystemUtils; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.*; import java.util.Base64; import java.util.UUID; /** * png,jpg 转 ico * * @author liuxb * @date 2022/5/15 12:47 **/ @Slf4j @Service public class ImageService { public String imgToICO(MultipartFile file, ImageEntity imageEntity) throws IOException { String originalFilename = file.getOriginalFilename(); InputStream inputStream = file.getInputStream(); //保存到本地 String fullName = FilenameUtils.concat(SystemUtils.JAVA_IO_TMPDIR, originalFilename); log.info("保存上传图片到本地:{}", fullName); File pngFile = new File(fullName); OutputStream out = new FileOutputStream(pngFile); IOUtils.write(IOUtils.toByteArray(inputStream), out); IOUtils.closeQuietly(out); IOUtils.closeQuietly(inputStream); //修改尺寸 String ext = FilenameUtils.getExtension(originalFilename).toLowerCase(); File resizeFile = new File(FilenameUtils.concat(SystemUtils.JAVA_IO_TMPDIR, UUID.randomUUID().toString() + "." + ext)); String size = imageEntity.getSize(); int width = 0; if(size.contains("x")){ width = Integer.valueOf(size.substring(0, size.indexOf("x"))); }else if(size.contains("X")){ width = Integer.valueOf(size.substring(0, size.indexOf("X"))); }else{ width = Integer.valueOf(size); } resize(pngFile, resizeFile, width, width, ext); log.info("保存上传图片修改后的尺寸{}, 到本地:{}", size, fullName); //png/jpg 转 ico String icoPath = "D:/upload/" + UUID.randomUUID().toString() + ".ico"; Image4j.Convert(resizeFile.getAbsolutePath(), icoPath); log.info("上传图片转换为ico到本地{}", icoPath); String base64 = Base64.getEncoder().encodeToString(IOUtils.toByteArray(new FileInputStream(icoPath))); //删除 pngFile.delete(); resizeFile.delete(); new File(icoPath).delete(); log.info("删除本地保存的上传图片"); log.info("删除本地保存的修改后的尺寸的上传图片"); log.info("删除本地保存的ico"); return base64; } /** * 图片尺寸修改 * @param originalFile * @param resizedFile * @param newWidth * @param newHeight * @param formatName */ public static void resize(File originalFile, File resizedFile, int newWidth, int newHeight, String formatName) { try { BufferedImage inputBufImage = ImageIO.read(originalFile); ResampleOp resampleOp = new ResampleOp(newWidth, newHeight);// 转换 resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.Oversharpened); BufferedImage rescaledTomato = resampleOp.filter(inputBufImage,null); ImageIO.write(rescaledTomato, formatName, resizedFile); } catch (IOException e) { throw new BizException("图片尺寸缩放异常", e); } } }
ImageControler类
@Slf4j @Validated @RestController @RequestMapping("/img") public class ImageController { @Autowired private ImageService imageService; /** * png/jpg转为ico图标 * * @param file * @param imageEntity * @return */ @PostMapping("/upload") public RetResult<ContentVo> upload(@RequestParam MultipartFile file, ImageEntity imageEntity) { if (file.isEmpty()) { throw new BizException("上传文件为空"); } String targetFileName = file.getOriginalFilename(); if (!"jpg".equalsIgnoreCase(FilenameUtils.getExtension(targetFileName)) && !"png".equalsIgnoreCase(FilenameUtils.getExtension(targetFileName))) { throw new BizException("上传图片格式必须是jpg或者png"); } try { String base64 = imageService.imgToICO(file, imageEntity); return RetModel.ok().setData(ViewObject.content(base64)); } catch (IOException e) { throw new BizException("上传文件异常"); } } /** * 图片下载 * * @param response * @param filePath * @throws IOException */ @GetMapping("/download") public void download(HttpServletResponse response, @NotBlank(message = "文件路径不能为空") String filePath) throws IOException { InputStream inputStream = new FileInputStream(filePath); OutputStream outputStream = response.getOutputStream(); byte[] bytes = IOUtils.toByteArray(inputStream); outputStream.write(bytes); } }
3. 前端测试
上传下载文件表单
<div id="form"> <form name="submitForm"> <p> <strong>目标尺寸:</strong> <select style="width: 200px;" name="size" class="btn btn-info" type="button"> <option selected="selected" value="16" class="btn btn-default" type="button">16px x 16px</option> <option value="32" class="btn btn-success" type="button">32px x 32px</option> <option value="48" class="btn btn-success" type="button">48px x 48px</option> <option value="64" class="btn btn-success" type="button">64px x 64px</option> <option value="128" class="btn btn-success" type="button">128px x 128px</option> <option value="256" class="btn btn-success" type="button">256px x 256px</option> <option value="512" class="btn btn-success" type="button">512px x 512px</option> </select> </p> <p> <strong>原始图片(不超过200kb):</strong> <input name="file" size="40" type="file" class="btn btn-info" width="200px;" /> </p><hr> <input style="font-weight: bold;" type="button" onclick="submitFormFn()" value="点击制作ICO" class="btn btn-danger"/> </form> </div> <div id="showDiv" style="display: none;" class="text-center"> <img id="showImg" /> <a href="#" onclick="downloadFn()">点击下载ico</a> </div>
js脚本
var base64 = ""; function submitFormFn(){ if($('input[name=file]')[0].files[0] === undefined){ return } var formData = new FormData(); formData.append("size", $('[name=size]').find("option:selected").val()); formData.append("file", $('input[name=file]')[0].files[0]); $.ajax({ url: "http://localhost:8080/img/upload", type: "POST", data: formData, contentType: false, //必须false才会自动加上正确的Content-Type processData: false, // 必须false才会避开jQuery对 formdata 的默认处理, XMLHttpRequest会对 formdata 进行正确的处理 dataType: "json", success: function (data) { if (data.retCode === '0000') { base64 = data.result.content $('#showImg').prop('src', "data:image/png;base64," + base64) $('#showDiv').show() } }, error: function () { alert("上传失败!"); } }); } //a标签方式下载 function downloadFn(){ if(!base64){ return } let a = document.createElement('a'); a.download = new Date().getTime() + '.ico'; a.href = "data:image/png;base64," + base64; $("body").append(a); // 修复firefox中无法触发click a.click(); $(a).remove(); }
更多相关内容 -
全能图片格式转换器(支持PNG转ICO图标256或512像素)
2018-07-20 16:12:25全能图片格式转换器(支持PNG转ICO图标,支持256或512像素,或者更大像素的转换) -
PNG转ICO 图标格式互转工具 2.1.0.0 绿色版
2016-09-23 11:51:43PNG转ICO 图标格式互转工具 2.1.0.0 绿色版 -
PNG-ICO 图标格式互转工具.rar
2021-06-28 09:24:12PNG-ICO 图标格式互转工具 -
全规格PNG转ICO命令行工具v1.0最新绿色版
2019-07-30 14:36:18全规格PNG转ICO工具是一款png转ico工具。该软件简单实用,效率也是非常之高。需要的朋友们可以下载试试! 软件说明 全规格PNG转ICO工具支持一键把png图片转换成多尺寸ICO文件,以适应系统各种环境,生成为最佳图标... -
png-to-ico:将png转换为ico格式
2021-05-13 14:13:49png到ico 将png转换为Windows ico格式 笔译 介绍 安装 npm install --save-dev png-to-ico 用法 npm脚本: png-to-ico electron.png > app.ico 编程用法: const fs = require ( 'fs' ) ; const pngToIco = ... -
PNG转ICO JPG转ICO.BMP转ICO.TGA转ICO工具
2020-06-29 20:42:35PNG转ICO.JPG转ICO.BMP转ICO.TGA转ICO工具 支持 win7 xp win10 -
png转ico在线工具
2021-04-12 09:58:40我们都知道同类属性的格式之间是可以转换的,比如:视频格式转换(用狸窝)、ico转png可以实现吗?答案是肯定的,下面小编教就你怎么把ico格式转换成png格式。好玩:照片换背景(简单)如何去掉歌曲原唱视频转GIF图片...一打开电脑就看到的桌面图标,打开的每一个百度网页,在搜索栏前面都会有一个脚丫形状
的图标,它们叫做ico,Icon file的缩写,是Windows的图标文件格式的一种。我们都知道同类属性的格式之间是可以转换的,比如:视频格式转换(用狸窝
)、ico转png可以实现吗?答案是肯定的,下面小编教就你怎么把ico格式转换成png格式。好玩: 照片换背景(简单) 如何去掉歌曲原唱 视频转GIF图片
升级狸窝VIP有什么好处? www.leawo.cn/space-1-do-thread-id-28884.html
小知识拓展:ico是可以存储单个图案、多尺寸、多色板的图标文件,具有明确指代含义的计算机图形。其中桌面图标是软件标识,界面中的图标是功能标识。它有一套标准的大小和属性格式,且通常是小尺寸的。每个图标都含有多张相同显示内容的图片,每一张图片具有不同的尺寸和发色数,一个图标就是一套相似的图片。
(ico图标展示图)
要想把ico格式转换成png格式,可以用photoshop,简称:ps。运行ps,然后打开你已经准备好的ico格式的图标,你可以选择一个或者多个一起在ps中打开。ps是一款好用的处理图片的软件,如果你的电脑上没有,可以到这里来下载(ps下载地址:www.leawo.cn/ND_upload.php?do=info&id=510)
这里以打开一个为例,选中一个图标,点击打开,此时会弹出一个对话窗口,选择如下图所示选项,是像素为128*128的意思,你也可以选择其他的选项来尝试一下有什么不同。
选择之后,然后点击OK按钮。
图标在ps中打开之后看到的是一个像素为128*128大小的背景透明的图片。
此时如果觉得图片太小的话,还可以改变图像大小,点击菜单栏的图像,在下拉菜单中选择图像大小选项按钮,就会弹出一个对话框,在里面输入你想要图像大小即可,也可以按快捷键:Ctrl+Alt+I,这里以输入宽度:500,长度:500为例:
点击确定后你会看到图像变大了,如果还不满意的话,可以继续修改。
最后一步点击菜单栏中的文件,在下拉菜单中选择储存为选项按钮,也可以按快捷键:Ctrl+Shift+S,在弹出的对话框中选择PNG格式,再点击确定,接着弹出的一个小对话框也直接点击确定(记得你储存输出图片的格式位置哦)。
这样就得到了一张背景透明的png图片了,相同的道理,用相同的做法也可以把ico转换为gif/ipg等格式的图片,你学会了吗,其实就像
ico图标制作软件 gif/jpg/png怎么转换成ico图标:
【小段子】有一女,27岁。自从那天早上起床没穿衣服走出卧室门,
被对面站在阳台上看风景的大爷看到后,大爷从此每天早上站
在他家的阳台等她起床.......大爷,这是条不归路啊……
-
png转ico图标如何在线操作?如何使用ico转换工具?
2022-03-12 19:30:09在日常的生活和办公中,如果小伙伴想要将png图片转换成ico图标的话,可以使用在线图片处理工具,比如这款在线png转ico(https://www.yasuotu.com/png-to-ico)图标工具—压缩图,方便快捷,无需下载安装,一键即可...在日常的生活和办公中,如果小伙伴想要将png图片转换成ico图标的话,可以使用在线图片处理工具,比如这款在线png转ico(https://www.yasuotu.com/png-to-ico)图标工具—压缩图,方便快捷,无需下载安装,一键即可完成ico在线转换。下面,小编就给大家详细的讲解一下这款图片ico转换工具是如何操作的吧!
一、打开压缩图网站,点击所有功能-png转ico功能,点击选择文件进行图片上传。二、点击选择文件上传图片(注意:原图宽高不一致时选择尺寸会造成画面变形,可先使用压缩图图片压缩指定大小修改原图尺寸),然后选择图标尺寸,调整后开始转换。
三、经过系统处理后,点击保存图片,下载到电脑,上传使用即可。
以上就是“png转ico图标”的全部操作流程,小伙伴可以利用这款工具进行在线png转ico,ico转jpg,ico转png等操作,经常制作ico图标的小伙伴,可以收藏网站,再次使用时就会很方便啦!
-
PNG转ICO工具(ICO转PNG) 2.1.0.0 绿色版
2015-08-21 15:35:30NG-ICO 图标格式互转工具 使用起来非常方便 只需要一拖一拉就行~ 使用注意:目录下有AveIcon.ini配置文件 [Options] 128=1 96=0 72=0 64=0 48=0 32=0 24=0 16=0 数字为0则不生成该分辨率文件,数字改为1则为生成,... -
png转ico工具
2014-07-09 11:14:01png转ico工具 支持透明 支持批量 支持命令行 -
png转ico.rar
2021-12-03 10:10:28png转ico图标 -
png转ICO图标
2018-01-01 23:52:18png转ICO图标,将要转换的文件放在PNG文件下,双击EXE文件,自动生成在ico文件内 -
ico工具.zip,PNG转ICO
2020-07-23 14:47:21制作ICO工具 通过多个图片制作ICO工具 -
如何使用电脑将png转ico格式?赶快跟着小编学起来
2022-03-07 16:14:27ico是一种常见的图标格式,常用于系统图标、文件夹图标等,如果需要将png图片转换成ico格式,小伙伴表示有没有一款不用下载安装软件,轻松在线png转ico?不要着急,今天小编给大家安利一款图片ico转换工具,只需简单...怎样将png转ico(https://www.yasuotu.com/png-to-ico)?ico是一种常见的图标格式,常用于系统图标、文件夹图标等,如果需要将png图片转换成ico格式,小伙伴表示有没有一款不用下载安装软件,轻松在线png转ico?不要着急,今天小编给大家安利一款图片ico转换工具,只需简单操作三步,就可以生成ico图标了。下面,小编将png转ico的方法给大家介绍一下一起来学习下吧!
一、首先,我们打开压缩图网站,点击所有功能-png转ico功能,点击选择文件进行图片上传。二、点击选择文件上传图片(注意:原图宽高不一致时选择尺寸会造成画面变形,可先使用压缩图图片压缩指定大小修改原图尺寸),然后选择图标尺寸,调整后开始转换。
三、经过系统处理后,点击保存图片,下载到电脑,上传使用即可。
这就是png转ico的操作步骤小编已经给大家介绍完毕了,通过以上的操作方法小伙伴就可以轻松将png转ico,是不是非常简单好用呢。小编还发现压缩图网站还可以jpg转ico,ico转jpg,ico转png等功能,基本满足我们小伙伴对ico格式的需求,如果觉得不错,记得给小编点赞鼓励一下哦!
-
PNG转ICO.rar
2019-06-04 23:53:55PNG转ICO -
png转ico图片工具
2009-09-10 09:43:01傻瓜化得工具 傻瓜化得工具 傻瓜化得工具 傻瓜化得工具 -
PNG转ICO-在线转换
2021-02-10 11:18:22在线工具:PNG转ICO-在线转换图表文件 https://www.aconvert.com/cn/icon/png-to-ico/ -
PNG转ICO在线转换
2020-07-23 09:53:35网址:https://www.easyicon.net/covert/ -
ToYcon.zip --ico转png、png转ico(可叠加)
2021-08-19 15:00:41png转ico(可叠加,一份ico文件包含多个icon图) ico转png 可用于Python打包 -
python批量png转ico
2021-01-20 18:27:36Python 批量 png 转 ico 一、前言: 首先说一下ico文件的作用:ico是windows的图标文件格式,可以用于浏览器首段图标显示,也可以用于Windows软件。我的话一般用来美化文件夹图标。比如像这样: 二、思路: ico... -
png转ico和.ico转.png格式.docx
2021-09-27 00:01:53png转ico和.ico转.png格式.docx -
PDF转图片 图片转PDF NCM转MP3 PDF转word png转ico
2022-05-13 12:00:38各中文件互转工具,PDF转图片 图片转PDF NCM转MP3 PDF转word png转ico 图片转文字 -
png转ico
2016-04-06 16:15:00http://pan.baidu.com/s/1kTBPvIv -
png转换ico
2008-09-30 22:57:26小巧的png转换ico 简单 实用 -
JGP,PNG等格式图片转换成ico图标格式
2019-02-01 14:04:05该工具是使用Python脚本语言编辑,实现日常使用的图片格式如JGP,PNG,GIF等 转换成 ico图标 logo,方便python打包时需用到ico图标 -
PNG转ICO 工具
2011-11-02 14:08:01非常小巧的png转ico工具,可以调整转换大小,从16*16 到256*256,可以自行修改,非常方便 -
PNG转ICO工具
2013-02-03 17:59:36PNG转ICO工具 -
png转换ico.zip
2020-04-03 16:16:37本产品可将格式的图转变为ico 格式 -
png转换ico格式
2019-04-11 14:46:48https://www.easyicon.net/covert/