idea如何自制插件_Lice IntelliJ插件图标制作过程
这是只属于没有Photoshop的人的悲哀。
首先先大吼一声——劳资终于做出了高清无码的Lice图标!
直接进入正题
其实我还是想说一下事情的发展过程的——
我想照着IntelliJ IDEA的图标风格做一个Lice插件的文件图标,于是就先各种找图标源。
本来可以去翻IntelliJ Community源码,后来直接在IntelliJ安装目录找到了这个文件。在:
安装目录/lib/icons.jar
里面,打开它,寻找fileTypes目录,里面有几乎所有文件格式对应的图标。JB为每种文件提供了四个图标文件——16 x 16 png
16 x 16 svg
32 x 32 png
32 x 32 svg
其中,我个人认为有用的,只有第零个。因为我运行插件之后,发现IntelliJ不会自动缩放文件图标(一开始我整了个长宽都是几百像素的图片,吓尿了,效果你们可以自己看,我就懒得复现再截图了)
所以现在可以进入正题了
为了保证清晰度,我找到了CSS文件对应的图标:
然后将它拖到一个在线SVG编辑器里面,开始魔改。中途花费了两个小时左右(我简直想死的心都有了,终于体会到SuperSodaSea做像素画的辛苦了), 然后撸出了一个能看的svg图标。这个图标放在插件仓库里面,由于目前插件还不能见人,感兴趣的就自己去翻我commit记录找,不是特别感兴趣的就先别忙看吧。
我将它转成PNG之后发现,尼玛这就是AV画质嘛。。啥都看不清楚啊!
我当时的内心就是崩溃的,做了这么久的SVG(为什么花了那么久?因为调整透明度啊 颜色啊 字体啊 文字位置啊 改完了还得导出SVG,编辑一下XML,来手动控制一下那些元素的位置),居然没·有·用!
不要气馁,我们换个方法搞定它——做个PNG吧。于是我开始手动编辑PNG,过程极其痛苦。因为找不到可以进行像素级编辑的编辑器(真是太痛苦了),唯一一个可以进行像素级编辑的Windows自带的画图工具不支持透明度。
于是我回到了当年撸图的流水线——画图撸原型,然后光影魔术手进行透明度调整。然后整了半天,终于整出了这个效果:
我满心欢喜地打开IntelliJ IDEA插件工程,把文件拷过去,然后我看到了这一幕:
我突然发现,原版图标每个像素都是有一定透明度的,而我只是粗暴地将空白部分做成了透明的,看对比:
你永远不懂我伤悲,像白天不懂夜的黑
然后我实在没办法了。
怎么办呢?
我苦苦思寻,渐渐地进入了回忆之中,脑中浮现出一个画面——当年我还是个小小少年,刚开始接触Kotlin,拿着Swing的图形API把玩。
!!!!!!!!!!
我可以使用Kotlin代码操作png图片的每一个像素,反正都是RGB值,这多简单啊!
然后我就撸了个Kotlin程序,想起了当年写位运算程序的辛酸日子:
fun main(args: Array) {
val origin = ImageIO.read(File("lice.png"))
(0..origin.width - 1).forEach { x ->
(0..origin.height - 1).forEach { y ->
val o = origin.getRGB(x, y)
origin.setRGB(x, y, o + (0x22 shl 24))
}
}
ImageIO.write(origin, "PNG", File("lice-edited.png"))
}
希望它能带来改变。
然后编辑之后导出了一张几乎是透明的图片。。。。
这就很尴尬了,这也不是我想要的啊,我只是想要一张高仿的png图片啊!
我此时智商上线,灵光再一次闪现!
我发现这样不行,无论怎样硬编码RBGA的A值,都是不靠谱的。
既然是高仿,那就应该拿出高仿的样子!
我拿出了IntelliJ自带的CSS图片的png文件,直接将它的RGBA值抄过去。然后发现原版图标写了CSS字样的部分,每个像素的透明度都不一样。
于是我就只能“只抄没字样的部分,字样直接采用彩色背景的透明度”。你永远不懂我伤悲,像白天不懂夜的黑
最后版本:
fun main(args: Array) {
val origin = ImageIO.read(File("lice.png"))
val css = ImageIO.read(File("css.png"))
val alphaPosition = 0xFF shl 24
val bottomAlpha = css.getRGB(css.width - 1, css.height - 1) and alphaPosition
(0..origin.width - 1).forEach { x ->
(0..origin.height - 1).forEach { y ->
val o = origin.getRGB(x, y)
origin.setRGB(x, y,
if (y <= 9 || x < 1) o + (css.getRGB(x, y) and alphaPosition)
else o + bottomAlpha
)
}
}
ImageIO.write(origin, "PNG", File("lice-edited.png"))
}
导出之后感觉效果还不错:
累死我了 QwQ
明天还要上课背单词….睡觉睡觉。
(发之前画十字,求不要吞图片(给湛湛 dram和果冻发了预览邀请(跪求知乎不要吞我图片(他们收到邀请了(知乎食我大雕(垃圾(根据我对知乎编辑器行为的观察(知乎编辑器题图应该是只支持png格式的解码(因为,我上传了jpg编码的以png为扩展名的图片和jpg图片,都GG了,上传直接失败(只有QQ截图直接保存为PNG的图片是可以上传的(辣鸡知乎)))))))))))
idea如何自制插件_Lice IntelliJ插件图标制作过程相关推荐
- Pycharm安装插件及优秀插件推荐
目录 在线安装插件 离线安装插件 方式一:在设置中安装插件 方式二:拖拽安装插件 常用插件 CSV(⭐) Rainbow CSV Json Parser(⭐) Background Image Plu ...
- intellij html 插件,解决intellij idea中使用live edit插件不能在chrome即时显示css变化的方法(html可以)...
问题源于一次chrome内核的更新 详细请看 就是说chrome在14年一月的时候更新了一次内核,removes getAllStylesheets method from protocol这是原话, ...
- 最好用的 IntelliJ 插件 Top 10
本文翻译自:http://idea-intellij.com/top-10-intellij-plugins/ IntelliJ的十大插件?相信每个人都有自己的选择.我们也同样如此.在这里,我们为您带 ...
- Java程序员必备的Intellij插件
善用Intellij插件可大幅提升我们的效率 以下是我用过不错的Intellij插件 1. .ignore 地址:https://plugins.jetbrains.com/plugin/7495-- ...
- Leaflet中使用leaflet-cion-pulse插件实现波动的图标效果
场景 Leaflet快速入门与加载OSM显示地图: Leaflet快速入门与加载OSM显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在上面的基础上,怎样使用插件实现波动的图标效 ...
- 安装插件设置Intellij IDEA背景图片
安装插件设置Intellij IDEA背景图片 1.打开settings窗口 2.在Plugins搜索框里输入Background Image Plus,在仓库里搜索 3.单击Background I ...
- 盘点开发者最爱的 IntelliJ 插件 Top 10
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! IntelliJ的十大插件?相信每个人都有自己的选择.我们也同样如此.在这里,我们为您带来我 ...
- 程序员必备的 11 大Intellij插件
点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 I wish I could be strong enough t ...
- QQ光遇攻略机器人插件光萌插件『LightCute』来啦!内容自制,独家小精灵问答功能!!
此插件由@小叮当 制作,UI视觉设计@kindyear,@光萌攻略组 为内容提供者, @柒彦 为内容管理者,使用插件完全无需担心图片授权/版权问题,因为内容纯自制. 插件所有攻略内容源于[光萌攻略组] ...
最新文章
- 高手是如何定位内存问题的代码位置的
- 蓝桥杯2015初赛-饮料换购-枚举
- linux 命令pg,linux下操作PostgreSQL的常用命令
- ubuntu 16.0安装ros-kinetic
- java的jdk是什么_什么是jdk?
- mysql 服务没有报告任何错误_mysql 服务无法启动 服务没有报告任何错误
- java requirenonnull_Java null判断新方法:Objects.requireNonNull 你过用吗?
- 老老实实学WCF] 第五篇 再探通信--ClientBase
- oracle日期函数有效,oracle日期处理函数整理
- P6647 [CCC 2019] Tourism
- ASC转换BCD,ASC2BCD
- 投射式触摸屏自电容与互电容工作原理基础(未完待续)
- 简述网卡的作用和工作原理_网卡驱动是什么,它的作用及工作原理介绍
- 知识产权助力中国经济高质量发展广受认可
- 华为设备配置Easy IP 地址转换
- EasyDarwin开源流媒体服务器
- php文件 怎么写韩文,php插入韩文txt文件内的数据,SQL-Front显示乱码
- python快速_Python3快速入门
- 卷积后的尺寸大小问题
- 技嘉服务器主板是什么型号,ASUS华硕/技嘉/微星MSI工作站服务器主板型号对比说明,注入win7驱动工具...