﻿
{"id":1909,"date":"2013-07-31T21:43:05","date_gmt":"2013-07-31T21:43:05","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=1909"},"modified":"2013-08-26T22:14:07","modified_gmt":"2013-08-26T22:14:07","slug":"c-ile-internetten-resim-indirme","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-ile-internetten-resim-indirme\/","title":{"rendered":"C# \u0130le \u0130nternetten Resim \u0130ndirme"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>\u00d6nceki yaz\u0131lar\u0131mdan <a href=\"http:\/\/www.gencayyildiz.com\/blog\/c-ile-bot-yapimi-web-sitelerinden-icerik-cekme\/\" target=\"_blank\">C# \u0130le Bot Yap\u0131m\u0131 &#8211; Web Sitelerinden \u0130\u00e7erik \u00c7ekme<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda C# ile i\u00e7erik \u00e7ekme botu nas\u0131l yaz\u0131l\u0131r bahsetmi\u015ftim.Haliyle bu konu \u00fczerinde \u00e7al\u0131\u015fmalar\u0131m\u0131 s\u00fcrd\u00fcr\u00fcrken internetten bir resim indirmenin pe\u015fine d\u00fc\u015ft\u00fcm.Asl\u0131nda mant\u0131ksal olarak \u00e7ok basit olsada, programatik olarak hangi nesneler bu i\u015fi daha h\u0131zl\u0131 ve aktif bir \u015fekilde yapabilir merak ettim do\u011frusu.Detayl\u0131 ara\u015ft\u0131rmalar\u0131m neticesinde sizlere sunaca\u011f\u0131m bir kod par\u00e7ac\u0131\u011f\u0131 sayesinde internetten istedi\u011finiz resmi an\u0131nda ve temiz bir \u015fekilde indirmenin yolunu buldum.Ama bu buldu\u011fum algoritman\u0131n g\u00fczel bir yan\u0131 ise edindi\u011finiz resmi istedi\u011finiz formatta elde edebiliyorsunuz.<br \/>\n<!--more--><br \/>\nBu yaz\u0131mda \u00f6rnek bir proje uygulamas\u0131 \u00fczerinden kodu payla\u015faca\u011f\u0131m.Beni bilirsiniz, genellikle bodoslama kod payla\u015fmaktansa, hangi kodun ne i\u015fe yarad\u0131\u011f\u0131n\u0131 anlata anlata yazmay\u0131 severim \ud83d\ude42<\/p>\n<p>Son kez \u015funuda belirtmek isterim; S\u0131n\u0131f, metod, \u00f6zellik vs. gibi elemanlar\u0131n isimlerini \u0130ngilizce yazmaktan hi\u00e7 ho\u015flanmam.Lakin bu yaz\u0131mda biraz \u0130ngilizce isimler \u00fczerinde program yazaca\u011f\u0131z.Bu seferlik mazur g\u00f6r\u00fcn \ud83d\ude42<\/p>\n<p>Evet, \u00f6ncelikle b\u00fct\u00fcn i\u015flemleri yapacak metodlar\u0131m\u0131z\u0131 i\u00e7inde bar\u0131nd\u0131racak olan &#8220;DownloadImage&#8221; isminde bir s\u0131n\u0131f olu\u015ftural\u0131m.(<span style=\"font-size: x-small;\"><em>\u0130simleri istedi\u011finiz gibi de\u011fi\u015ftirebilirsiniz.Tabi program ak\u0131\u015f\u0131ndaki yerlerini de de\u011fi\u015ftirmeniz \u015fart\u0131yla.<\/em><\/span>)<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class DownloadImage\r\n    {\r\n\r\n    }\r\n<\/pre>\n<p>\u015eimdi bu s\u0131n\u0131f\u0131m\u0131za iki tane Field olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        private string imageUrl;\r\n        private Bitmap bitmap;\r\n<\/pre>\n<p>Yukar\u0131daki yazd\u0131\u011f\u0131m\u0131z Field&#8217;lardan string tipteki &#8220;imageUrl&#8221; isimli olan\u0131 internetten indirece\u011fimiz resmin linkini tutacakt\u0131r.Bitmap tipteki &#8220;bitmap&#8221; isimli olan Field&#8217;\u0131m\u0131z ise resmimizi Bitmap tipinde ta\u015f\u0131yacakt\u0131r.<\/p>\n<p>\u015eimdi programlama dilinin esnekliklerinden biri olan <em>Yap\u0131c\u0131 Metod<\/em> yani <em>Constructor<\/em> metodu olu\u015fturup, &#8220;DownloadImage&#8221; s\u0131n\u0131f\u0131m\u0131zdan nesne olu\u015fturulma an\u0131nda belirli de\u011ferler alal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public DownloadImage(string imageUrl)\r\n        {\r\n            this.imageUrl = imageUrl;\r\n        }\r\n<\/pre>\n<p>Burada Contructor ile ald\u0131\u011f\u0131m\u0131z de\u011fer yukar\u0131da tan\u0131mlad\u0131\u011f\u0131m\u0131z &#8220;imageUrl&#8221; de\u011fi\u015fkenine aktar\u0131lacak de\u011ferdir.Yani resim linkini &#8220;DownloadImage&#8221; nesnesini tan\u0131mlar tan\u0131mlamaz &#8220;imageUrl&#8221; de\u011fi\u015fkenimize verebiliriz.<\/p>\n<p>\u015eimdi ise resmimizi daha \u00f6nce tan\u0131mlad\u0131\u011f\u0131m\u0131z Bitmap tipinden olan &#8220;bitmap&#8221; de\u011fi\u015fkenimize(Field) aktaral\u0131m.Bu i\u015flem i\u00e7in a\u015fa\u011f\u0131daki gibi bir metod yazaca\u011f\u0131z.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public void Download()\r\n        {\r\n            try\r\n            {\r\n                WebClient client = new WebClient();\r\n                Stream stream = client.OpenRead(imageUrl);\r\n                bitmap = new Bitmap(stream);\r\n                stream.Flush();\r\n                stream.Close();\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Console.WriteLine(e.Message);\r\n            }\r\n        }\r\n<\/pre>\n<p>Bu metod sayesinde &#8220;imageUrl&#8221; isimli de\u011fi\u015fkenimize verilen resim linkini kanallar arac\u0131l\u0131\u011f\u0131yla okutup, Bitmap nesnesine aktarabiliyoruz.Fark\u0131ndaysan\u0131z, &#8220;bitmap&#8221; isimli referans\u0131m\u0131za burada nesne ba\u011flan\u0131yor.<\/p>\n<p>Art\u0131k Bitmap nesnemizdeki resmimizi bilgisayar\u0131m\u0131za indirebilmek i\u00e7in son kozumuzu oynayal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public void SaveImage(string filename, ImageFormat format)\r\n        {\r\n            if (bitmap != null)\r\n            {\r\n                bitmap.Save(filename, format);\r\n            }\r\n        }\r\n<\/pre>\n<p>Bu metodu incelerseniz e\u011fer, string tipten &#8220;filename&#8221; ve ImageFormat tipinden &#8220;format&#8221; isimli iki parametre mevcut.&#8221;filename&#8221; parametremize resmimizi nereye indirmek istiyorsak dizinin adresini veriyoruz.&#8221;format&#8221; parametresi ile de resmimizi indirirken hangi formatta indirece\u011fimizi ayarlayabiliyoruz.Yani &#8220;.jpeg&#8221; format\u0131nda bir resmi &#8220;.png&#8221; format\u0131nda kaydedebiliriz.<\/p>\n<p>\u015eimdilik i\u015fimizi g\u00f6recek s\u0131n\u0131f\u0131 ve metodlar\u0131 tam olarak yazd\u0131k.Ha e\u011fer derseniz ki, &#8220;karde\u015fim ben bu Bitmap nesnesinde oynamalar yapmak isterim&#8221; diye.O zaman bu s\u0131n\u0131fa a\u015fa\u011f\u0131daki gibi bir metod daha ekleyebiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public Bitmap GetImage()\r\n        {\r\n            return bitmap;\r\n        }\r\n<\/pre>\n<p>Bu metod ilede Bitmap Field&#8217;\u0131m\u0131za ula\u015fabilir ve \u00fczerinde istedi\u011finiz fantaziyi ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<p>\u015eimdi &#8220;DownloadImage&#8221; s\u0131n\u0131f\u0131m\u0131z\u0131n b\u00fct\u00fcn i\u00e7eri\u011fini derlenmi\u015f bir \u015fekilde komple a\u015fa\u011f\u0131ya yaz\u0131yorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class DownloadImage\r\n    {\r\n        private string imageUrl;\r\n        private Bitmap bitmap;\r\n        public DownloadImage(string imageUrl)\r\n        {\r\n            this.imageUrl = imageUrl;\r\n        }\r\n        public void Download()\r\n        {\r\n            try\r\n            {\r\n                WebClient client = new WebClient();\r\n                Stream stream = client.OpenRead(imageUrl);\r\n                bitmap = new Bitmap(stream);\r\n                stream.Flush();\r\n                stream.Close();\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Console.WriteLine(e.Message);\r\n            }\r\n        }\r\n        public Bitmap GetImage()\r\n        {\r\n            return bitmap;\r\n        }\r\n        public void SaveImage(string filename, ImageFormat format)\r\n        {\r\n            if (bitmap != null)\r\n            {\r\n                bitmap.Save(filename, format);\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p>Asl\u0131nda yaz\u0131y\u0131 okuman\u0131za gerek kalmadan bu kod par\u00e7ac\u0131\u011f\u0131n\u0131 al\u0131p kullanabilirsiniz.Lakin ben hangi metodun ne i\u015fe yarad\u0131\u011f\u0131ndan bahsetmek i\u00e7in konuyu irdelemek istedim.<\/p>\n<p>Bizim i\u00e7in as\u0131l \u00f6nemli olan bu s\u0131n\u0131f\u0131 kullanabilmek.Mant\u0131ksal olarak hangi metodlar\u0131 \u00f6nceden \u00e7a\u011f\u0131rmam\u0131z gerekti\u011fini size g\u00f6stermek istiyorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        private void Form1_Load(object sender, EventArgs e)\r\n        {\r\n            DownloadImage ImageDownload = new DownloadImage(&quot;http:\/\/app.nedir.com\/content_imgs\/resim.jpg&quot;);\r\n            ImageDownload.Download();\r\n            ImageDownload.SaveImage(&quot;D:\\\\Resimadi.png&quot;, ImageFormat.Png);\r\n        }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer, &#8220;DownloadImage&#8221; tipinden nesnemizi olu\u015fturuyor ve Contructor metoda resim adresini veriyoruz.Daha sonra Download metodumuzu \u00e7a\u011f\u0131r\u0131p, Bitmap nesnemizi olu\u015fturuyoruz.En sonunda SaveImage isimli metodumuz sayesinde resmimizi istedi\u011fimiz dizine kaydediyoruz.<\/p>\n<p>Bu s\u0131n\u0131f\u0131n elemanlar\u0131n\u0131 mant\u0131ksal olarak bu \u015fekilde kullanman\u0131z gerekmektedir.Aksi taktirde resim indirme i\u015flemi ger\u00e7ekle\u015fmeyecektir.<\/p>\n<p>Bir yaz\u0131m\u0131z\u0131n daha sonuna gelmi\u015f bulunmaktay\u0131z.Buraya kadar s\u0131k\u0131lmadan, sabrederek okudu\u011funuz i\u00e7in minnettar\u0131m sizlere..<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere..<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar..<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>\u00d6nceki yaz\u0131lar\u0131mdan C# \u0130le Bot Yap\u0131m\u0131 &#8211; Web Sitelerinden \u0130\u00e7erik \u00c7ekme ba\u015fl\u0131kl\u0131 yaz\u0131mda C# ile i\u00e7erik \u00e7ekme botu nas\u0131l yaz\u0131l\u0131r bahsetmi\u015ftim.Haliyle bu konu \u00fczerinde \u00e7al\u0131\u015fmalar\u0131m\u0131 s\u00fcrd\u00fcr\u00fcrken internetten bir resim indirmenin pe\u015fine d\u00fc\u015ft\u00fcm.Asl\u0131nda mant\u0131ksal olarak&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[27,467,329,469,470,468],"class_list":["post-1909","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","tag-c","tag-download","tag-image","tag-indirme","tag-internet","tag-resim"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1909","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=1909"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1909\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=1909"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=1909"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=1909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}