前几天逛知乎,看到一个问题:
“有没有一段代码,让你觉得人类的智慧也可以璀璨无比?”
作为一个渣渣程序猿自然就好奇的点进去看了。
嗯。。结果就是什么都看不懂。感觉全是大牛,各种脑洞。我看了简直就是各种惊奇,心想:卧槽居然还能这样玩儿。
往下翻了好久,看到了一个比较好玩的,说让下载图片,改后缀为rar可以打开。其实这个把戏几年前就见到过了。贴吧里有时候有人发内涵图的时候就这么干过,把种子放到压缩文件,然后放进图片里。
不过那会儿完完全全的小白,啥都不懂,只是觉得挺好玩的,挺好奇怎么弄的,不过也没有去搜这个原理。(太懒了。。。)
看到这我才看了一下是怎么弄的,其实原来就只是一句cmd命令而已:copy /b a.jpg+b.rar c.jpg
其实就是表示把一个RAR文件拼到一张图片的末尾,生成一个新的图片文件。其实不用rar也可以把其他文件压缩进图片里,只不过生成新的图片之后,改后缀名会打不开文件,提示文件已损坏。一般都是用压缩文件格式的。
回答里还看到答主还说了一句 “当年还有小伙伴写成了界面程序…找不到了。”
想想觉得这个应该挺简单的,无非就是获取一个图片路径,加上一个压缩文件的路径,然后保存生成新的图片嘛。反正当时也无聊,就做着玩一下。。
于是乎,就有了下面这个界面。。。
WinForm在大二的时候学过一点儿,之后就再也没用过了,到现在两年多了。
想着是点这两个文本框,弹出文件选择的窗口。两个都选好后点生成,就弹出要保存文件的窗口,选择地址,输入文件名保存就完了。
说实话在学校还真没有学过这几个控件,或许是学过,不过一直没用过就给忘了吧。嘿嘿嘿…
不管了,打开工具箱一个个看,看着哪个顺眼,感觉是的就拖过来试试。然就有了这几个控件:
分别给两个TextBox添加Click事件。让它们弹出文件选择的窗口,记得筛选一下文件类型
我在textBox1_Click事件里写上 openFileDialog1.ShowDialog(); 后,发现弹出窗体 选择文件之后,文本框还是什么都没有,看来还得自己手动赋值了
1 | private void textBox1_Click(object sender, EventArgs e) |
这里 IsImage(filePath) 是判断了一下选择的文件到底是不是图片文件。防止别人修改文件后缀名上传。主要就这一句:
1 | System.Drawing.Image img = System.Drawing.Image.FromFile(path); |
这会把文件试着转换成Image图片,如果这一句不报错,说明就是图片文件。
现在已经可以获得要压缩的图片 和文件地址了,下一步就是获取用户要保存的新图片的地址了。
在“生成”按钮的点击事件里面,首先得判断图片、和文件的路径是否为空,已经路径文件是否真的存在。
这些判断通过之后,就弹出文件另存为的窗口,同样的,也是用 saveFileDialog1.FileName
就能获取到用户输入文件名之后的文件全路径了。
现在好了,三个都能获取到了。可是接下来的问题来了… 要怎么用程序去调用cmd 并运行这条命令呢??这个我之前也是没有接触过的。。好吧,只好找度娘了。于是就有了下面这段代码:
1 | private void RunCMD(string cmd) |
万能的百度哇。。 到这应该就可以搞定了吧。
下面奉上全部代码:
1 | using System; |
打包好的程序在这里,右键保存图片,改后缀为zip或者rar等压缩文件格式后就可以打开了。