pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

Bitmap.Save 保存一個圖標實際上保存了一個 .png

Bitmap.Save to save an icon actually saves a .png(Bitmap.Save 保存一個圖標實際上保存了一個 .png)
本文介紹了Bitmap.Save 保存一個圖標實際上保存了一個 .png的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我需要編寫一個程序,該程序將根據圖塊集圖像生成 108 個圖標組合(標準 Windows .ico 文件).

我使用 System.Drawing.Bitmap 類來構建每個組合,并像這樣保存它們:

Bitmap IconBitmap = new Bitmap(16, 16);//一些處理,寫入源tileset的不同部分//...IconBitmap.Save(Path.Combine(TargetPath, "Icon" + Counter + ".ico"),ImageFormat.Icon);

但是我發現保存的文件實際上是PNG.Windows 資源管理器和 Visual Studio 都不能正確顯示它,但 GIMP 可以,如果我在十六進制查看器中打開它,我看到的是:

00000000 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52‰PNG........IHDR00000010 00 00 00 10 00 00 00 10 08 06 00 00 00 1F F3 FF .....................ó?00000020 61 00 00 00 01 73 52 47 42 00 AE CE 1C E9 00 00 a....sRGB.??.é..00000030 00 04 67 41 4D 41 00 00 B1 8F 0B FC 61 05 00 00 ..gAMA..±..üa...00000040 00 09 70 48 59 73 00 00 0E C3 00 00 0E C3 01 C7 ..pHYs...?...?.?00000050 6F A8 64 00 00 00 15 49 44 41 54 38 4F 63 60 18 o¨d....IDAT8Oc`.00000060 05 A3 21 30 1A 02 A3 21 00 09 01 00 04 10 00 01 .£!0..£!........00000070 72 A5 13 76 00 00 00 00 49 45 4E 44 AE 42 60 82 r¥.v....IEND?B`?

另外,如果我將 .ico 重命名為 .png Windows Explorer 可以正確顯示它.

即使我在位圖上什么也沒做,我也會得到這個結果(我用 new 構建它并直接Save 它,這給了我一個黑色的 png).

我做錯了什么?

我也試過這個,它給了我可怕的 16 色圖標,但我還是寧愿避免這個解決方案(使用句柄):

Icon NewIcon = Icon.FromHandle(IconBitmap.GetHicon());FileStream FS = new FileStream(Path.Combine(Target, "Icon" + Counter + ".ico"),FileMode.Create);NewIcon.Save(FS);

解決方案

ImageFormat.Icon 確實不能像您想象的那樣用于寫作,.NET 根本不支持寫作.ico 文件并簡單地轉儲 PNG 數據.

上有幾個項目CodeProject(和這個)(和另一個),讓你寫一個 .ico 文件,其實沒那么難.文件格式非常簡單,支持 BMP 和 PNG 數據.

I need to write a program that will generate 108 combinaisons of icons (standard windows .ico files) based on a tileset image.

I use the class System.Drawing.Bitmap to build each combinaison, and I save them like this:

Bitmap IconBitmap = new Bitmap(16, 16);
// Some processing, writing different parts of the source tileset
// ...
IconBitmap.Save(Path.Combine(TargetPath, "Icon" + Counter + ".ico"),
                ImageFormat.Icon);

But I found out that the file saved is actually a PNG. Neither Windows Explorer nor Visual Studio can display it correctly, but GIMP can, and if I open it in an Hex viewer, here is what i see:

00000000  89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52  ‰PNG........IHDR
00000010  00 00 00 10 00 00 00 10 08 06 00 00 00 1F F3 FF  ..............ó?
00000020  61 00 00 00 01 73 52 47 42 00 AE CE 1C E9 00 00  a....sRGB.??.é..
00000030  00 04 67 41 4D 41 00 00 B1 8F 0B FC 61 05 00 00  ..gAMA..±..üa...
00000040  00 09 70 48 59 73 00 00 0E C3 00 00 0E C3 01 C7  ..pHYs...?...?.?
00000050  6F A8 64 00 00 00 15 49 44 41 54 38 4F 63 60 18  o¨d....IDAT8Oc`.
00000060  05 A3 21 30 1A 02 A3 21 00 09 01 00 04 10 00 01  .£!0..£!........
00000070  72 A5 13 76 00 00 00 00 49 45 4E 44 AE 42 60 82  r¥.v....IEND?B`?

Also if I rename the .ico to .png Windows Explorer can display it properly.

I have this result even if I do NOTHING on the bitmap (I construct it with new and Save it directly, that gives me a black png).

What am I doing wrong?

I also tried this, which gave me awful 16 color icons, but I would prefer to avoid this solution anyway (using handles) :

Icon NewIcon = Icon.FromHandle(IconBitmap.GetHicon());
FileStream FS = new FileStream(Path.Combine(Target, "Icon" + Counter + ".ico"),
        FileMode.Create);
NewIcon.Save(FS);

解決方案

It's true that the ImageFormat.Icon does not work for writing as you'd suppose, .NET simply does not support writing .ico files and simply dumps the PNG data.

There are a few projects on CodeProject (and this one) (and another one) and that let you write an .ico file, it's actually not that hard. The file format is pretty straight-forward, and supports BMP and PNG data.

這篇關于Bitmap.Save 保存一個圖標實際上保存了一個 .png的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Right-click on a Listbox in a Silverlight 4 app(右鍵單擊 Silverlight 4 應用程序中的列表框)
WPF c# webbrowser scrolls over top menu(WPF c# webbrowser 在頂部菜單上滾動)
C# Console app - How do I make an interactive menu?(C# 控制臺應用程序 - 如何制作交互式菜單?)
How to avoid duplicate form creation in .NET Windows Forms?(如何避免在 .NET Windows Forms 中創建重復的表單?)
UI Automation Control Desktop Application and Click on Menu Strip(UI自動化控制桌面應用程序并單擊菜單條)
Removing thin border around the menuitems(刪除菜單項周圍的細邊框)
主站蜘蛛池模板: 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | 成都租车_成都租车公司_成都租车网_众行宝| 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 威客电竞(vk·game)·电子竞技赛事官网| Akribis直线电机_直线模组_力矩电机_直线电机平台|雅科贝思Akribis-杭州摩森机电科技有限公司 | China plate rolling machine manufacturer,cone rolling machine-Saint Fighter | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 防潮防水通风密闭门源头实力厂家 - 北京酷思帝克门窗 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 冰晶石|碱性嫩黄闪蒸干燥机-有机垃圾烘干设备-草酸钙盘式干燥机-常州市宝康干燥 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 | 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 无水硫酸铝,硫酸铝厂家-淄博双赢新材料科技有限公司 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 智慧钢琴-电钢琴-便携钢琴-数码钢琴-深圳市特伦斯乐器有限公司 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 万濠投影仪_瑞士TRIMOS高度仪_尼康投影仪V12BDC|量子仪器 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 上海租奔驰_上海租商务车_上海租车网-矢昂汽车服务公司 | 心得体会网_心得体会格式范文模板 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 刘秘书_你身边专业的工作范文写作小秘书| 代做标书-代写标书-专业标书文件编辑-「深圳卓越创兴公司」 | 低浓度恒温恒湿称量系统,强光光照培养箱-上海三腾仪器有限公司 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 魔方网-培训咨询服务平台| 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 |