网站设计欣赏移动,网页界面设计的要求,深圳设计馆,如何做垂直网站备注#xff1a;本文原文首发于博客园#xff1a;
https://www.cnblogs.com/hoodlum1980/p/17766287.html
【简介】
Photoshop ICO 插件是为 Photoshop 开发的功能扩展插件#xff0c;使得 Photoshop 可以直接读写 ICO 格式文件。由于 Photoshop 具有强大的像素位图编辑功…备注本文原文首发于博客园
https://www.cnblogs.com/hoodlum1980/p/17766287.html
【简介】
Photoshop ICO 插件是为 Photoshop 开发的功能扩展插件使得 Photoshop 可以直接读写 ICO 格式文件。由于 Photoshop 具有强大的像素位图编辑功能用户众多用户基础好这使得使用 Photoshop 制作图标变得方便简单快捷。而基本上降低了对多个软件协同合作的需求。也就是说可以使用 Photoshop 就能完成绝大多数的工作剩下一点小小的工作例如图标文件的合并等就属于比较简单的任务相应的软件也比较容易开发和提供。
经过一段时间的紧张开发在 13 年之后2.0 版本于 2010 年发布我终于可以发布最新版 V3.0的 ICO 文件格式插件了。这一次的更新我做了非常多的功能升级最主要的新增功能特性包括
1新增 X64 版本提供这个对开发来说几乎 0 成本但是对用户来说却很重要的一个需求。因为现在的软件和 PC 已经普遍进入 x64 时代了。
2新增对包含 PNG 格式图像的图标的支持这种格式是由 windows vista 开始引入并支持的PNG 格式图像采用 zlib 压缩可以大大减小文件尺寸但是一些比较古老的软件可能不支持。保存图标时用户可以选择是否使用 PNG 格式来压缩 32 BPP 图像。
3新增对鼠标光标文件cursor的读写支持支持设置 hotspot。
4在读写选项对话框上提供更强和更友好的 UI 支持尤其是在保存图标时用户可以实时预览到自动生成的其他尺寸和质量的图像。用户可以自由勾选想要包括在文件中的图像。尤其是对 32 BPP 为基础生成其他低质量的图标时原来 V2.0 版提供的 alpha threshold 参数不能直观预览使得这个参数的设置十分盲目现在用户可以通过拖动 slider 滑竿控件实时看到这个参数对生成图像的影响。
5采用质量更佳的我自己写的全像素插值的图像缩小算法。可以使得生成的小图像质量比 2.0 版本的 4 像素插值更好。
6生成索引图像依然采用 8 叉树算法。生成 1 BPP 的二元图像则使用比较简单的灰度阈值方法。
7新增 UI 多语言支持。插件已经内置中文和英文语言资源点击对话框上的国旗图标可以切换界面语言。用户也可以通过语言资源模板文件很容易为插件添加第三方语言支持。或者如果用户对内置语言有不满意之处可以通过增加语言资源的 xml 文件实现“覆盖”插件的内置语言资源因为外置的语言资源文件比插件内置的语言资源优先级更高。实现多语言增加了很多开发精力。尽管对国人来说这一功能意义不大但这是我非常看重的一个功能点所以我尽最大努力将它实现了。
8新增对插入 BPP16 R5G6B5 格式图像的支持。V2.0 版本的插件已经支持 BPP16 图像的读取尽管这种格式的图像在现实中应该是非常罕见一些图像读取软件可能也不支持这种格式但这种格式的图像还是有存在的主要是在特殊的设备例如比较古老的手机或者历史时期为了降低图像文件大小的考虑。所以插件同时支持插入 BPP16 的 R5G5B5 (555和 R5G6B5 565两种 BPP 16 的支持。但仅在读取或者用户选择要插入新的图像时可以选择。保存时插件默认不会插入 BPP16 的图像。 【下载链接】下面是新版 ICO 插件 V3.0 的下载链接
ICO V3.0.3https://files.cnblogs.com/files/hoodlum1980/ICO-V3.0.3.zip?t1697704176downloadtrue 版本发布日期文件名md53.0.32023-10-19ICO.8BI0a518e2c36d7aae853d53c9de870578dICO64.8BIfab002b0ab00144b6776ee022269f8d8PsPlugInSetup.exe8e6ca3ecd4bf11f711b9ba9c946fae3f 检查文件 MD5 以确保这些文件是源自作者发布的版本且未收到他人改动。 其中 x86 32 位版本是我主要调试的版本使用 Photoshop CS 8.0.1测试。x64 版本简单经过 Photoshop CS411.064 bit 的测试。 【功能简介】
1从 PE 文件中抽取图标
从 PE 文件中抽取图标或光标文件。打开一个含有图标光标文件的 PE 文件注意如果文件是 EXE 后缀需要先把文件后缀改为 DLL才能打开这点和 V2.0 时的要求一样。例如打开 shell32.dll 时将弹出图标资源列表。如果同时有图标和光标资源则他们被分组显示其中第一组是图标第二组是光标如下图所示 用户可以选定一个资源导入到 PS 中进行编辑。但是由于每次只能导入 PS 一个资源且每个资源只能导入其中的一个图像这使得保存时将和 PE 文件中的资源产生差别或者说有损的另存。为了规避这一点所以这里也可以选择不经过 PS而是直接把图标按照 PE 中的原样导出到硬盘文件。用户可以一次选择一个 PE 文件中的所有图标和光标然后选择一个文件夹点击“好”就可以将这个 PE 文件中的所有图标和光标全部原样导出了。
在比较新的 windows 版本中一些 DLL 的图标等不变资源被分离到了另一个以 mun 为后缀的文件实质也是 DLL 文件只是后缀不同中并放在 C:\Windows|SystemResources 目录下。可能是因为这些 DLL 针对不同语言可以有多个版本但是这些图标之类的资源是不变的所以为了避免让这些资源跟随 DLL 形成多份副本而把这些不变的资源从原 DLL 中剥离到另一个 DLL 中进行”共享“。所以 ICO 插件新增了支持打开 ”mun“ 后缀的文件如下图所示 2选取图像
当用户选择一个图标文件或者从 PE 中选取了一个图标导出时如果这个资源包含多个图像则会弹出图像选择对话框要求用户选择要读取的图像 在这里用户可以选择图像可以对图像进行放大和缩小的操作还可以设置图标的背景查看图标和不同背景色合成的效果。也可以显示像素网格只有放大倍数 400% 时才会显示像素网格。插件将默认先选中图标中质量最佳的图像。如果图标只有一个图像则这个对话框就不会显示而是直接将唯一的图像打开到 Photoshop 文档中。打开图标之后如果图像具有 AND MASK非 PNG 图像则 AND MASK 被添加到 Photoshop 的一个新建通道之前在 V2.0 中这个通道是和图标中的数据一致但是会和用户对通道的自觉不符AND MASK 中的白色代表透明像素黑色代表不透明像素因此为了更符合用户直觉在 V3.0 中我反转了这个通道。现在 Alpha 通道对应选区将成为代表 AND MASK 的通道的选区的子集。
用户选择预览合成效果和 Alpha 通道的信息当鼠标在图像中移动时对话框底部将会显示鼠标的位置和像素的 BGRA 信息。 在这个对话框上支持使用快捷键 [CTRL] [] 和 [CTRL] [-] 缩放图像支持 [CTRL] [] 切换显示像素网格状态熟悉 Photoshop 的用户可以知道这些快捷键和 Photoshop 的快捷键是一致的。
3显示光标热点
当用户打开一个光标CURSOR文件时这个对话框还将增加一个选项“突出显示光标热点”开启时光标热点将会用一个红色十字表示其所在位置如下图所示 在打开光标文件时热点将作为一个独立的通道被添加到 Photoshop 文档中用户能够通过通道查看光标的 hotspot 所在位置。 4保存图标
保存图标时将会弹出保存图标对话框 这个对话框是 3.0 版本插件中最重要的功能增强。首先对话框已经插入了其他的大小和质量的建议图像用户可以勾选自己需要的图像。如果这些图像不满足用户需求也可以点击“插入新图像”按钮插入其他尺寸和质量的图像。这里最重要的就是当从一个 32 BPP 的图像生成其他 BPP 图像时相当于从反锯齿图像生成锯齿图像这里很重要的一个参数就是对透明像素和不透明像素的区分参数Alpha 阈值。在 32 BPP 图像中每个像素都具有一个 alpha 信息在 0 - 255 之间控制和背景的 alpha 合成。0 代表完全透明255 代表完全不透明中间值则是半透明的合成。当降级到 BPP 小于 32 时这些处于 0 和 255 中间的 alpha 值的像素就必须选择要么成为透明要么不透明这就是 alpha threshold 这个参数的作用。插件的逻辑是设定一个 alpha threshold
如果 Alpha Alpha Threshold则这个像素将变为透明。
否则这个像素将不透明。
因此如果 AlphaThreshold 0则图像将完全不透明。如果 AlphaThreshold 256 则图像将完全透明。
在对话框上提供了 alpha threshold 的 slider 滑竿用户可以通过拖动滑竿实时看到这个参数的改变对生成图像结果的影响。它最重要的作用就是控制锯齿图像的黑边的大小我们可以从下图看出 alpha threshold 参数对生成图像的影响 我们可以看到当 AlphaThresh 1 默认值时生成的图像保留了最多的原图像素也就使得阴影比较大。当增加 AlphaThresh 时图像的阴影部分将会逐渐缩小。当拖动调节滑竿时用户将可以实时看到生成图像的效果因此可以更好的调节生成图像的质量。而在 v2.0 版本插件中这个参数不能实时预览因此只能凭感觉设置导致生成的图像效果难以控制。
5设置光标热点
保存光标文件时用户可以设置光标热点 用户可以选择要保存到的文件类型当选中“光标”类型时对话框将会显示“热点”设置的按钮点击设置热点按钮就可以通过鼠标在图像上按下来设置热点了这个操作和在 Visual Studio 中一致或者直接在文本框中输入对应的数值即可。但这里我没有提供突出显示热点的功能选项因为这个并不是那么重要。
6主图像源图像
在保存时所有图像中有一个图像是直接来自于 Photoshop 文档的数据这个图像就被称之为主图像或者源图像所有其他图像都是从这个主图像的数据为基础而后生成出来的。所以主图像具有很重要的作用它在 listview 列表中尺寸后面被加上一个感叹号备注中也特别标明了“源自 PS 文档”来表示这是主图像。主图像的主要作用是对主图像的 alpha threshold 和 hotspot 的设置将会自动传播到其他“子图像”中。因此当选中主图像时alpha threshold 和 hotspot 对应的控件都会用粗体字体显示这表示这时的设置将会自动传播给其他所有图像。当选中非主图像时这些设置将只会对当前选中的这一个图像有效其他图像不会受到影响。
7设置透明色
对没有透明信息的图像保存时将显示设置透明色的按钮。这里对 V2.0 版本有所不同的是我对这里的透明设置做了简化因为 V2.0 版本在这里的设置透明色的选项有些花里胡哨但是作用并不是很大因为这个需求本身没那么重要和常用所以在 V3.0 版本里我对这个功能简化成只提供设置透明色的功能用户设置一个透明色来把图像变为部分透明因为在开发中有一些资源是使用透明色贴图的所以这里可以比较方便的将其转化为图标。 8设置图像编码
对每个 32 BPP 的图像用户可以自主选择是否使用 PNG 编码这里建议是对超过 48 像素尺寸的图像使用 PNG 编码以使得图像尺寸较小。但是有些图像软件可能不支持 PNG 编码的图像所以这里需要用户自行考虑。要修改图像编码设置只需要双击对应图像的编码列将会弹出一个 combobox用户可以切换编码如果没有选择 PNG 编码则插件使用非压缩格式的 BI_RGB Windows 位图格式方式进行编码。 需要注意的是只有 32 BPP 的图像才能修改编码。非 32 BPP 的图像只能采用 BMP 存储这是因为如果把 BPP1 - BPP 24 的图像使用 PNG 编码将会丢失图标 AND MASK 中携带的透明信息因此其他 BPP 不支持采用 32 BPP。 9全像素插值缩小算法
ICO 3.0 采用的全像素插值缩小算法和 ICO 2.0 采用的删除像素或四像素插值算法的结果对比如下图所示 这里的算法是把一个 256 x 256 的 32 BPP 图像缩小至 48 x 48 像素的 32 BPP 小图像这里的比对效果可能不是很明显的区分“优劣”但可以说明一些问题。那就是 ICO 2.0 算法采用的不管是删除像素COLOR ON COLOR还是四像素插值的方法都因为丢失大量中间像素的颜色信息而产生了一种“锐化”的尖锐感如果特定图像和特定缩放比例不巧的话还会丢失掉重要颜色信息而使得结果不理想。而 ICO 3.0 因为是对原图所有像素都参与插值所以结果会显得依然比较平滑视觉效果会更加自然给人的主观感受会更接近原图。 【常见问题】
1保存的时候为什么文件类型中没有出现 ICO 格式
答因为 ICO 和 CURSOR 文件的最大尺寸是 256 x 256 像素。因此如果 Photoshop 文档的高度和宽度有任何一项超过 256 像素则保存的时候ICO 文件格式就会被 Photoshop 自动隐藏这是因为插件的 PIPL 属性中指定了文档的最大尺寸为 256 X 256 像素。因此如果要保存为 ICO 格式请先把 Photoshop 文档的图像大小缩放到 256 x 256 像素以下保存的时候就可以选择 ICO 格式了。 2保存为 ICO 的时候怎样修改图像编码为 PNG 编码或者禁止使用 PNG 编码
答只有 BPP 32 的图像支持使用 PNG 编码保存。对 32 BPP 图像用鼠标双击保存选项对话框右下角的 ListView 的 ”编码“ 一列在弹出的组合框中选择编码”-“代表不使用 PNG 编码然后鼠标点击其他位置使组合框失去输入焦点即完成对该图像编码的设置。可以对每个 32 BPP 的图像进行编码设置。注意一些古老的软件可能不支持解码含有 PNG 编码图像的 ICO 文件。 3能不能在保存选项对话框上直接编辑某个图像某个像素的颜色和 Alpha 值或者选择一个文件作为插入图像
答目前版本ICO V3.0.2 ) 尚不支持。未来在评估需求和实现比较合理的情况下有可能引入类似功能。 4如何为插件增加新的语言支持
答编辑压缩包内的 ICO_LANG_TEMPL.xml把文件中的 elements 的 Text 翻译到对应语言然后把这个文件更名到 ICO.LANG.your-language.xml 并复制到插件被安装到的目录这时如果文件内容能够正确加载在对话框上点击图标将能看到相应的菜单项被添加这时就可以使用这种语言资源了。其中语言 ID 也就是国旗 ID可以查阅压缩包内的 FLAGS_00_3F.png 等文件得到插件已经内置了这 200 多个国家或地区的旗帜图标。
5如何手动安装插件
答以 x86 为例x64 于此类似把 ICO.8BI 32 位版本文件复制到Photoshop的文件格式插件目例如 C:\Program Files\Adobe\Photoshop CS\增效工具\文件格式 文件夹下面重新启动Photoshop即可。在PS的菜单中如果有下面的菜单帮助-关于增效工具-ICO...则说明插件安装成功。 6如何卸载 ICO 插件: 答从插件安装目录中删除 ICO.8BI 或 ICO64.8BI。然后打开注册表编辑器删除以下注册表键如果存在这些注册表键用于存储用户选择的界面语言信息 HKEY_USERS\your user id class\SOFTWARE\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node\Adobe\Photoshop\hoodlum1980\ICO HKEY_USERS\your user id class\SOFTWARE\Classes\VirtualStore\MACHINE\SOFTWARE\Adobe\Photoshop\hoodlum1980\ICO HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Adobe\Photoshop\hoodlum1980\ICO HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Photoshop\hoodlum1980\ICO 【参考资料】
1A Simple Method for Color Quantization: Octree Quantization. 生成索引图像的八叉树算法
2flag icons (by mjamesgmail.com). 国旗图标 【版本更新历史】
1V3.0.3 选择图像对话框去除 “显示图像边框” checkbox因为这个选项的存在意义不大。增加 [Ctrl]-[] 快捷键用来切换显示像素网格状态。2023-10-19。