.Net WebApi üzerinden en sık olarak kullandığımız json haricinden çok spesifik olarak image dönmem gerekti bunun için msdn’i biraz karıştırınca işime yarayan kaynağa ulaştım ve makale devamındaki ufak kod ile genellikle json geri dönüşü yaptığımız rest controller’ımızda image cevazı dönen bir metod oluşturmuş olduk.
.Net WebApi’den Image Cevabı Dönmek
Ben Image türünde bir nesne dönderdim ama siz herhangi bir formatta dosya döndürebilirsiniz. Makalenin konusu olan image türünde nesneyi döndürmek için alttaki gibi bir kod kullanmak ihtiyacınızı karşılayacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public HttpResponseMessage GetImage() { // Sanal olarak 150px genişliğinde ve 25px yüksekliğinde bir Image nesnesi oluşturduk. Image resultImage = new Bitmap(150, 25, PixelFormat.Format24bppRgb); // Üzerinde çizimleri yapmamıza imkan veren Graphics nesnesini üstteki Image nesmemizi referans vererek oluşturuyoruz. using (Graphics grp = Graphics.FromImage(resultImage)) { /* Not: Yeni oluşturduğumuz görsel arkaplanı varsayılan olarak siyah olacaktır ama alttaki 2 satır ile arkaplan'ı siyah veya istediğiniz farklı bir renge dönüştürebilirsiniz dikkat etmeniz gereken width ve height değerleri bitmap oluştururkenki width ve height değerleri ile aynı olmalıdır. */ Rectangle ImageSize = new Rectangle(0, 0, 150, 25); grp.FillRectangle(Brushes.White, ImageSize); // Metin çizim işlemleri DrawString metodu üzerinden gerçekleştiriliyor. grp.DrawString("muratoner.net", new Font("Tahoma", 15), Brushes.Black, 0f, 0f); } using (var stream = new MemoryStream()) { resultImage.Save(stream, ImageFormat.Png); HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new ByteArrayContent(stream.ToArray()); result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png"); return result; } } |
Ben sanal olarak oluşturulmuş bir image nesnesine muratoner.net diye bir metin yazdırıp bunu çıktı olarak dönderdim ama siz fiziksel olarak yer alan dosyalarınızın çıktı olarak dönderebilirsiniz artık ihtiyaç doğrultusunsa istediğiniz revize’yi gerçekleştirebilirsiniz.
Herhangi bir soruda yorum kısmından bana ulaşabilirsiniz.