亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

超簡易圖種生成器

2019-11-14 15:52:18
字體:
來源:轉載
供稿:網友

前幾天逛知乎,看到一個問題:“有沒有一段代碼,讓你覺得人類的智慧也可以璀璨無比?”。作為一個渣渣程序猿自然就好奇的點進去看了。

嗯。。結果就是什么都看不懂。感覺全是大牛,各種腦洞。我看了簡直就是各種驚奇,心想:臥槽居然還能這樣玩兒。

 

往下翻了好久,看到了一個比較好玩的,說讓下載圖片,改后綴為rar可以打開。其實這個把戲幾年前就見到過了。貼吧里有時候有人發內涵圖的時候就這么干過,把種子放到壓縮文件,然后放進圖片里。

不過那會兒完完全全的小白,啥都不懂,只是覺得挺好玩的,挺好奇怎么弄的,不過也沒有去搜這個原理。(太懶了。。。)

看到這我才看了一下是怎么弄的,其實原來就只是一句cmd命令而已:

copy /b a.jpg+b.rar c.jpg

其實就是表示把一個RAR文件拼到一張圖片的末尾,生成一個新的圖片文件。其實不用rar也可以把其他文件壓縮進圖片里,只不過生成新的圖片之后,改后綴名會打不開文件,提示文件已損壞。一般都是用壓縮文件格式的。

回答里還看到答主還說了一句 “當年還有小伙伴寫成了界面程序…找不到了。” 

 

想想覺得這個應該挺簡單的,無非就是獲取一個圖片路徑,加上一個壓縮文件的路徑,然后保存生成新的圖片嘛。反正當時也無聊,就做著玩一下。。

于是乎,就有了下面這個界面。。。

WinForm在大二的時候學過一點兒,之后就再也沒用過了,到現在兩年多了。

想著是點這兩個文本框,彈出文件選擇的窗口。兩個都選好后點生成,就彈出要保存文件的窗口,選擇地址,輸入文件名保存就完了。

說實話在學校還真沒有學過這幾個控件,或許是學過,不過一直沒用過就給忘了吧。嘿嘿嘿...

不管了,打開工具箱一個個看,看著哪個順眼,感覺是的就拖過來試試。然就有了這幾個控件:

分別給兩個TextBox添加Click事件。讓它們彈出文件選擇的窗口,記得篩選一下文件類型

我在textBox1_Click事件里寫上 openFileDialog1.ShowDialog(); 后,發現彈出窗體 選擇文件之后,文本框還是什么都沒有,看來還得自己手動賦值了

        PRivate void textBox1_Click(object sender, EventArgs e)        {            //彈出文件選擇窗口            openFileDialog1.ShowDialog();            //獲得文件名,包含全路徑            string filePath = openFileDialog1.FileName;            if (!string.IsNullOrEmpty(filePath.Trim()))            {                //判斷是否是圖片文件,防止修改文件后綴名等操作                bool rs = IsImage(filePath);                if (rs)                {                    //將選中文件的文件名顯示到TextBox中                    txtImg.Text = filePath;                }                else                {                    MessageBox.Show("_(:з」∠)_這不是真的圖片文件哦!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);                }            }        }

這里 IsImage(filePath) 是判斷了一下選擇的文件到底是不是圖片文件。防止別人修改文件后綴名上傳。主要就這一句:

System.Drawing.Image img = System.Drawing.Image.FromFile(path);

這會把文件試著轉換成Image圖片,如果這一句不報錯,說明就是圖片文件。

 

現在已經可以獲得要壓縮的圖片 和文件地址了,下一步就是獲取用戶要保存的新圖片的地址了。

在“生成”按鈕的點擊事件里面,首先得判斷圖片、和文件的路徑是否為空,已經路徑文件是否真的存在。

這些判斷通過之后,就彈出文件另存為的窗口,同樣的,也是用 saveFileDialog1.FileName 就能獲取到用戶輸入文件名之后的文件全路徑了。

現在好了,三個都能獲取到了??墒墙酉聛淼膯栴}來了...   要怎么用程序去調用cmd 并運行這條命令呢??這個我之前也是沒有接觸過的。。好吧,只好找度娘了。于是就有了下面這段代碼:

 1 private void RunCMD(string cmd) 2 { 3     System.Diagnostics.Process p = new System.Diagnostics.Process(); 4     p.StartInfo.FileName = "cmd.exe"; 5     p.StartInfo.UseShellExecute = false;    //是否使用操作系統shell啟動 6     p.StartInfo.RedirectStandardInput = true;//接受來自調用程序的輸入信息 7     p.StartInfo.RedirectStandardOutput = true;//由調用程序獲取輸出信息 8     p.StartInfo.RedirectStandardError = true;//重定向標準錯誤輸出 9     p.StartInfo.CreateNoWindow = true;//不顯示程序窗口10     p.Start();//啟動程序11 12     //向cmd窗口發送輸入信息13     p.StandardInput.WriteLine(cmd + "&exit");14 15     p.StandardInput.AutoFlush = true;16     //p.StandardInput.WriteLine("exit");17     //向標準輸入寫入要執行的命令。這里使用&是批處理命令的符號,表示前面一個命令不管是否執行成功都執行后面(exit)命令,如果不執行exit命令,后面調用ReadToEnd()方法會假死18     //同類的符號還有&&和||前者表示必須前一個命令執行成功才會執行后面的命令,后者表示必須前一個命令執行失敗才會執行后面的命令19 20             21     //獲取cmd窗口的輸出信息22     string output = p.StandardOutput.ReadToEnd();23     p.WaitForExit();//等待程序執行完退出進程24     p.Close();25 }

萬能的百度哇。。 到這應該就可以搞定了吧。

 

下面奉上全部代碼:

  1 using System;  2 using System.Diagnostics;  3 using System.IO;  4 using System.Text;  5 using System.Windows.Forms;  6 using System.Windows.Forms.VisualStyles;  7   8 namespace ImageRar  9 { 10     public partial class Form1 : Form 11     { 12         public Form1() 13         { 14             InitializeComponent(); 15         } 16          17         private void textBox1_Click(object sender, EventArgs e) 18         { 19             //選擇圖片 20             openFileDialog1.ShowDialog(); 21             //獲得文件名,包含全路徑 22             string filePath = openFileDialog1.FileName; 23  24             if (!string.IsNullOrEmpty(filePath.Trim())) 25             { 26                 //判斷是否是圖片文件,防止修改文件后綴名等操作 27                 bool rs = IsImage(filePath); 28  29                 if (rs) 30                 { 31                     //將選中文件的文件名顯示到TextBox中 32                     txtImg.Text = filePath; 33                 } 34                 else 35                 { 36                     MessageBox.Show("_(:з」∠)_這不是真的圖片文件哦!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); 37                 } 38             } 39         } 40  41         /// <summary> 42         /// 判斷文件是否為圖片 43         /// </summary> 44         /// <param name="path">文件的完整路徑</param> 45         /// <returns>返回結果</returns> 46         public bool IsImage(string path) 47         { 48             try 49             { 50                 System.Drawing.Image img = System.Drawing.Image.FromFile(path); 51                 return true; 52             } 53             catch (Exception) 54             { 55                 return false; 56             } 57         } 58  59         private void textBox2_Click(object sender, EventArgs e) 60         { 61             //選擇壓縮文件 62             openFileDialog2.ShowDialog(); 63             //獲得文件名,包含全路徑 64             string filePath = openFileDialog2.FileName; 65             //將選中文件的文件名顯示到TextBox中 66             txtFile.Text = filePath; 67  68         } 69          70         private void button1_Click(object sender, EventArgs e) 71         { 72             string path1 = txtImg.Text.Trim(); 73             string path2 = txtFile.Text.Trim(); 74  75             //判斷是否為空 76             if (string.IsNullOrEmpty(path1)) 77             { 78                 MessageBox.Show("(,,•? . •?,,)請先選擇一張圖片", "Oops!", MessageBoxButtons.OK, MessageBoxIcon.Warning); 79                 return; 80             } 81             else if (string.IsNullOrEmpty(path2)) 82             { 83                 MessageBox.Show("(,,•? . •?,,)請選擇你要放進圖片里的壓縮文件", "Oops!", MessageBoxButtons.OK, MessageBoxIcon.Warning); 84                 return; 85             } 86             //判斷文件是否存在 87             bool flag = true; 88             if (!File.Exists(path1)) 89             { 90                 flag = false; 91                 MessageBox.Show("ヽ(o`皿′o)?圖片路徑不正確!", "Oops!", MessageBoxButtons.OK, MessageBoxIcon.Warning); 92             } 93             if (!File.Exists(path2)) 94             { 95                 flag = false; 96                 MessageBox.Show("ヽ(o`皿′o)?壓縮文件路徑不正確!", "Oops!", MessageBoxButtons.OK, MessageBoxIcon.Warning); 97             } 98             if (flag) 99             {100                 //彈出文件保存窗口101                 saveFileDialog1.ShowDialog();102                 //獲得用戶新命名的圖片文件全路徑103                 string newFileName = saveFileDialog1.FileName;104                 105                 // 文件壓縮命令 eg: copy /b test.jpg+1.rar test2.jpg106                 StringBuilder cmd = new StringBuilder();107                 cmd.AppendFormat("copy /b {0}+{1} {2}", path1, path2, newFileName);108                 try109                 {110                     RunCMD(cmd.ToString());111 112                     DialogResult dr = MessageBox.Show("╭(●`∀´●)╯╰(●’?’●)╮/r/n生成成功!點擊確定查看", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);113                     if (dr == DialogResult.OK)114                     {115                         Process open = new Process();116                         open.StartInfo.FileName = "explorer";117                         open.StartInfo.Arguments = @"/select," + newFileName;118                         open.Start();119                     }120                 }121                 catch (Exception ex)122                 {123                     MessageBox.Show("╮(?•? ?•??)╭壓縮失敗,錯誤原因:/r/n" + ex.Message, "Oops!", MessageBoxButtons.OK, MessageBoxIcon.Error);124                 }125             }126 127         }128 129         private void RunCMD(string cmd)130         {131             System.Diagnostics.Process p = new System.Diagnostics.Process();132             p.StartInfo.FileName = "cmd.exe";133             p.StartInfo.UseShellExecute = false;    //是否使用操作系統shell啟動134             p.StartInfo.RedirectStandardInput = true;//接受來自調用程序的輸入信息135             p.StartInfo.RedirectStandardOutput = true;//由調用程序獲取輸出信息136             p.StartInfo.RedirectStandardError = true;//重定向標準錯誤輸出137             p.StartInfo.CreateNoWindow = true;//不顯示程序窗口138             p.Start();//啟動程序139 140             //向cmd窗口發送輸入信息141             p.StandardInput.WriteLine(cmd + "&exit");142 143             p.StandardInput.AutoFlush = true;144             //p.StandardInput.WriteLine("exit");145             //向標準輸入寫入要執行的命令。這里使用&是批處理命令的符號,表示前面一個命令不管是否執行成功都執行后面(exit)命令,如果不執行exit命令,后面調用ReadToEnd()方法會假死146             //同類的符號還有&&和||前者表示必須前一個命令執行成功才會執行后面的命令,后者表示必須前一個命令執行失敗才會執行后面的命令147 148             149             //獲取cmd窗口的輸出信息150             string output = p.StandardOutput.ReadToEnd();151             p.WaitForExit();//等待程序執行完退出進程152             p.Close();153 154             //Console.WriteLine(output);155         }156     }157 }

 

程序在這里,右鍵保存圖片,改后綴為zip或者rar等壓縮文件格式后就可以打開了。

 

注:保存成gif圖片 用瀏覽器查看可能無法查看,但是用畫圖或者圖片查看器打開是可以顯示的。

  Win10系統無效,不知道是什么問題??赡苁莄md的那個命令在win10沒用了吧。Win7、WIN8.1有效,其他未測。

 

參考資料:C#程序調用cmd執行命令

       C#打開文件所在的文件夾

 

最后:唉,園齡2年多了,還是前幾天才開的博客。這才是第一篇。我甚至還猶豫到底要不要寫下來。因為感覺這實在太簡單了,一點含量都沒有,都不好意思寫出來,寫這到底有沒有意義。

  不過也想通了,不會就要多記,我記性也差,以前用的東西,學過的東西,過段時間沒用就忘了,等某個時候又要用了又去翻以前的代碼看。東西又亂,夠翻的。以后就記在這里了!

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
自拍视频国产精品| 欧美黑人国产人伦爽爽爽| 国产日韩欧美夫妻视频在线观看| 亚洲石原莉奈一区二区在线观看| 大胆人体色综合| 国产综合视频在线观看| 亚洲精品大尺度| 亚洲欧洲一区二区三区久久| 精品久久久久久久久久国产| 亚洲欧美精品中文字幕在线| 亚洲图中文字幕| 国产成人av网址| 成人羞羞国产免费| 欧美成年人在线观看| 国产色婷婷国产综合在线理论片a| 欧美日韩国产激情| 成人国产精品久久久| 亚洲人成网7777777国产| 国产在线观看精品一区二区三区| 日韩最新免费不卡| 欧美高清在线视频观看不卡| 亚洲天堂一区二区三区| 亚洲国产精品资源| 久久6免费高清热精品| 中文字幕亚洲综合久久| 亚洲国产精品va在线看黑人| 一本色道久久88亚洲综合88| 庆余年2免费日韩剧观看大牛| 日韩经典中文字幕在线观看| 日韩成人在线视频网站| 欧美成人亚洲成人日韩成人| 茄子视频成人在线| 久久精品一偷一偷国产| 久久久久久国产精品| 91在线观看免费网站| 久久久久久久91| 亚洲男子天堂网| 欧美网站在线观看| 国产精品一区二区久久国产| 日韩精品免费在线视频| 亚洲精品国产精品自产a区红杏吧| 亚洲欧美日韩精品| 在线视频精品一| 伊人男人综合视频网| 粉嫩av一区二区三区免费野| 久久久免费精品| 国语对白做受69| 一本大道香蕉久在线播放29| …久久精品99久久香蕉国产| 欧美国产视频一区二区| 亚洲国产精品女人久久久| 国产精品电影久久久久电影网| 国产精品av在线| 国产美女久久久| 亚洲欧美日韩一区二区三区在线| 日韩av资源在线播放| 国产精品久久久久久久久久小说| 国产美女精彩久久| 欧美国产精品人人做人人爱| 亚洲第一福利在线观看| 亚洲一级片在线看| 亚洲欧美国产日韩天堂区| 欧美国产极速在线| 国产欧美一区二区三区视频| 日韩av在线看| 午夜精品久久久99热福利| 欧美日韩国产精品一区| 日韩av理论片| 亚洲偷熟乱区亚洲香蕉av| 欧美一级片免费在线| 久热精品视频在线观看一区| 成人美女免费网站视频| 日韩精品黄色网| 国产亚洲一区精品| 欧美黄色片免费观看| 国产91成人video| 北条麻妃一区二区三区中文字幕| 亚洲国产婷婷香蕉久久久久久| 中文字幕亚洲欧美日韩高清| 国产精品美女999| 8050国产精品久久久久久| 亚洲午夜女主播在线直播| 欧美成人精品一区二区| 性色av一区二区三区在线观看| 国产aⅴ夜夜欢一区二区三区| 九九热99久久久国产盗摄| 韩国v欧美v日本v亚洲| 色小说视频一区| 97久久精品在线| 国产精品视频xxxx| 亚洲视频在线观看视频| 国产视频精品xxxx| 在线视频日韩精品| 欧美乱妇40p| 怡红院精品视频| 国产精品久久网| 激情成人中文字幕| 国产精品亚洲综合天堂夜夜| 精品国产欧美一区二区三区成人| 欧美日韩在线视频首页| 精品久久久av| 久久精品久久精品亚洲人| 日韩福利在线播放| 日本久久91av| 欧美日韩精品中文字幕| 亚洲男人天堂网站| 日韩电影免费观看在线观看| 在线精品视频视频中文字幕| 久久天天躁狠狠躁夜夜爽蜜月| 91久久国产婷婷一区二区| 国产精品日韩av| 日韩精品有码在线观看| 色偷偷偷亚洲综合网另类| 九九精品在线视频| 欧美性猛交xxxx黑人| 一区二区在线免费视频| 日韩中文字幕在线观看| 国产婷婷色综合av蜜臀av| 日韩美女免费线视频| 欧美中文在线观看国产| 欧美激情网站在线观看| 国产精品爽黄69天堂a| 欧美性videos高清精品| 在线观看91久久久久久| 九九热视频这里只有精品| 国产精品久久中文| 最新亚洲国产精品| 91chinesevideo永久地址| 奇米一区二区三区四区久久| 国产精品va在线播放我和闺蜜| 亚洲精品久久久久久久久久久久久| 韩日欧美一区二区| 亚洲欧美在线x视频| 成人黄色中文字幕| 欧美华人在线视频| 国产精品精品视频一区二区三区| 国产成人精品免高潮在线观看| 日韩欧美国产成人| 欧美成人中文字幕| 久久久久久久一区二区| 亚洲最大福利网站| 精品国内产的精品视频在线观看| 久国内精品在线| 久久99精品久久久久久琪琪| 91精品国产亚洲| 久久频这里精品99香蕉| 亚洲美女性生活视频| 日韩av在线电影网| 九色91av视频| 久久精品视频网站| 国产大片精品免费永久看nba| 91精品91久久久久久| 国产精品国产福利国产秒拍| 国产aaa精品| 久久精品国产久精国产一老狼| 午夜精品一区二区三区在线视| 精品国产精品自拍| 5278欧美一区二区三区| 亚洲男人的天堂在线播放| 亚洲高清在线观看| 久久激情视频久久| 久久久久国产精品免费| 久久亚洲精品视频| 国内偷自视频区视频综合|