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(刪除菜單項周圍的細邊框)
主站蜘蛛池模板: 粘弹体防腐胶带,聚丙烯防腐胶带-全民塑胶 | 中细软知识产权_专业知识产权解决方案提供商 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 硫酸钡厂家_高光沉淀硫酸钡价格-河南钡丰化工有限公司 | 数显水浴恒温振荡器-分液漏斗萃取振荡器-常州市凯航仪器有限公司 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 浙江上沪阀门有限公司| 硫化罐-电加热蒸汽硫化罐生产厂家-山东鑫泰鑫智能装备有限公司 | 浙江宝泉阀门有限公司 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 泰安办公家具-泰安派格办公用品有限公司 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 火锅底料批发-串串香技术培训[川禾川调官网] | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | 北京四合院出租,北京四合院出售,北京平房买卖 - 顺益兴四合院 | 天然气分析仪-液化气二甲醚分析仪|传昊仪器 | 净水器代理,净水器招商,净水器加盟-FineSky德国法兹全屋净水 | ★塑料拖链__工程拖链__电缆拖链__钢制拖链 - 【上海闵彬】 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 混合生育酚_醋酸生育酚粉_琥珀酸生育酚-山东新元素生物科技 | 大数据营销公司_舆情监测软件_上海SEO公司-文军营销官网 | 成人纸尿裤,成人尿不湿,成人护理垫-山东康舜日用品有限公司 | 南昌旅行社_南昌国际旅行社_南昌国旅在线| 闪电优家-卫生间防水补漏_酒店漏水渗水维修_防水堵漏公司 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 成都思迪机电技术研究所-四川成都思迪编码器 | 双吸泵,双吸泵厂家,OS双吸泵-山东博二泵业有限公司 | 防水接头-电缆防水接头-金属-电缆密封接头-不锈钢电缆接头 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 拉曼光谱仪_便携式|激光|显微共焦拉曼光谱仪-北京卓立汉光仪器有限公司 | 合肥弱电工程_安徽安防工程_智能化工程公司-合肥雷润 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 聚合氯化铝厂家-聚合氯化铝铁价格-河南洁康环保科技 | 慈溪麦田广告公司,提供慈溪广告设计。 |