क्या मेमोरीस्ट्रीम को एएसपी को बांधने का कोई तरीका है: छवि नियंत्रण?एएसपी के लिए मेमोरीस्ट्रीम कैसे बांधें: छवि नियंत्रण?
उत्तर
एक हैंडलर किसी अन्य अनुरोध की तरह एक uRL पैरामीटर को स्वीकार कर सकते हैं। तो अपने <asp:image/>
से image.ashx
को जोड़ने के बजाय आप इसे image.ashx?ImageID=[Your image ID here]
पर सेट करेंगे।
में हैंडलर बनाने के लिए लिखना नहीं है और http://imageresizing.net लाइब्रेरी आपके लिए यह करती है। –
सर्वश्रेष्ठ शर्त एक HttpHandler बनाने के लिए है जो छवि को वापस कर देगा। फिर एएसपी पर ImageUrl प्रॉपर्टी को बाध्य करें: HttpHandler के यूआरएल पर छवि।
यहां कुछ कोड है। ,
<%@ WebHandler Language="C#" Class="ImageHandler" %>
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Web;
public class ImageHandler : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
context.Response.Clear();
if (!String.IsNullOrEmpty(context.Request.QueryString["id"]))
{
int id = Int32.Parse(context.Request.QueryString["id"]);
// Now you have the id, do what you want with it, to get the right image
// More than likely, just pass it to the method, that builds the image
Image image = GetImage(id);
// Of course set this to whatever your format is of the image
context.Response.ContentType = "image/jpeg";
// Save the image to the OutputStream
image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
}
else
{
context.Response.ContentType = "text/html";
context.Response.Write("<p>Need a valid id</p>");
}
}
public bool IsReusable
{
get
{
return false;
}
}
private Image GetImage(int id)
{
// Not sure how you are building your MemoryStream
// Once you have it, you just use the Image class to
// create the image from the stream.
MemoryStream stream = new MemoryStream();
return Image.FromStream(stream);
}
}
अगला जहां एएसपी का उपयोग कर रहे बस अपने aspx पृष्ठ के अंदर इसे कहते:
पहले HttpHandler बनाने छवि।
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Image ID="myImage" ImageUrl="~/ImageHandler.ashx?id=1" runat="server" />
</div>
</form>
</body>
</html>
और यही वह है।
क्या एचटीपी हैंडलर के बिना ऐसा करने का कोई तरीका है, मेरे पास प्रोजेक्ट ' –
मैं यह सोचते हैं रहा हूँ आप आप भाग्य http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16449
Hanselman यह बारे में भी ब्लॉग हाल ही में http://www.hanselman.com/blog/ASPNETFuturesGeneratingDynamicImagesWithHttpHandlersGetsEasier.aspx
में हो सकता है asp.net से गतिशील छवियों उत्पन्न करने के लिए की जरूरत है जबकि एक छवि के लिए एक MemoryStream databinding संभव नहीं है पेजों में छवियों को एम्बेड करने के लिए लेबल/जेनेरिक कंट्रोल, कुछ कोड और data URI scheme का उपयोग करना संभव हो सकता है, लेकिन उस दृष्टिकोण के साथ गंभीर समस्याएं हैं:
नुकसान
- एंबेडेड सामग्री निकाला जाता है और पहले परिवर्तन किया जा सकता है, तो फिर से इनकोडिंग और बाद में फिर से एम्बेडेड डीकोड किया जाना चाहिए।
- कुकीज़ समर्थित नहीं हैं।
- जानकारी जो कि एक से अधिक बार एम्बेडेड है, युक्त फ़ाइल के हिस्से के रूप में पुनः लोड किया गया है, और इस प्रकार ब्राउज़र के कैश से लाभ नहीं होता है।
- ब्राउज़र यूआरआई लंबाई को सीमित कर सकते हैं, एक प्रभावी अधिकतम डेटा आकार बना सकते हैं। उदाहरण के लिए, ओपेरा के पिछले संस्करणों में यूआरआई 4kB की सीमा थी, और के लिए IE8 बीटा 1
- डाटा एक साधारण धारा के रूप में शामिल किया गया है [जरूरत प्रशस्ति पत्र], और कई प्रसंस्करण वातावरण (जैसे कि वेब ब्राउज़र के रूप में) 32 केबी कंटेनरों का इस्तेमाल किया समर्थन नहीं कर सकते (जैसे मल्टीपार्ट/वैकल्पिक या संदेश/आरएफसी 822) मेटाडेटा, डेटा संपीड़न या सामग्री वार्ता जैसे अधिक जटिलता प्रदान करने के लिए।
- माइक्रोसॉफ्ट के इंटरनेट एक्सप्लोरर, संस्करण 7 (2008 क्यू 2 के रूप में बाजार का लगभग 70%) के माध्यम से, समर्थन की कमी है।
बेहतर दृष्टिकोण एक अलग "Image.aspx" पृष्ठ जो लेता है और अपने MemoryStream आउटपुट, की तरह थोड़े मैं अपने फ़ोटो एल्बम सॉफ्टवेयर में किया था कि मैं बना लिया है जो मैं ASP.net सीखने शुरू कर दिया उपयोग करने के लिए है :
(Don't laugh, that was my first attempt at ASP.net :-)
संपादित करें: ashx पर सहमत, इसके बाद के संस्करण कोड सिर्फ एक नमूना कार्यान्वयन को दिखाने के लिए है। जब मैं फोटो एलबम को अपडेट करने के लिए चारों ओर आ जाता हूं, तो वह इसके लिए एएसएचएक्स का उपयोग करेगा।
@ विल और बेन ग्रिसवाल्ड: "image.aspx" के बजाय "image.ashx" का उपयोग करें।
यह पूर्ण एएसपी की तुलना में अधिक हल्का वजन है।नेट पेज, और यह विशेष रूप से टेक्स्ट/एचटीएमएल के अलावा सामग्री-प्रकारों को संभालने के लिए डिज़ाइन किया गया है।
नहीं।
लेकिन आप उस छवि को स्ट्रीम करने के लिए एक विशेष पृष्ठ बना सकते हैं। सबसे पहले, आप पेज कि है कि आप जानते हैं कि जहां छवि पाने के लिए कुछ यूआरएल मापदंडों सहित स्ट्रीमिंग, प्रदर्शन करने के लिए छवि का URL सेट करें:
<img src="GetImage.aspx?filename=foo" ... />
GetImage.aspx में, आप फ़ाइल नाम मिल (या जो भी) uRL से, अपने MemoryStream में छवि को लोड, और फिर HttpResponse के लिए सीधे कि स्मृति धारा की सामग्री के बारे में:
response.Expires = 0;
response.Buffer = false;
response.Clear();
response.ClearHeaders();
response.ClearContent();
response.ContentType = "image/jpeg";
response.BinaryWrite(stream);
response.Flush();
response.Close();
आप एएसपीनेट के लिए टेलीरिक के बाइनरी इमेज नियंत्रण का उपयोग कर सकते हैं। यहाँ में
और जानकारी: http://www.telerik.com/products/aspnet-ajax/binaryimage.aspx
मेरे लिए यह "बफ़र =" @Page को झूठा "जोड़ने के लिए जरूरी हो गया था नहीं तो मैं एक ही चित्र हर समय मिलती रहती हैं ...
- 1. एएसपी नेट वेब एपीआई आरसी: मेमोरीस्ट्रीम
- 2. WPF - छवि नियंत्रण के लिए छवि छवि को बाध्य करें
- 3. मेमोरीस्ट्रीम
- 4. एएसपी छवि बटन JQuery मोबाइल
- 5. मेमोरीस्ट्रीम
- 6. मेमोरीस्ट्रीम
- 7. मेमोरीस्ट्रीम
- 8. मेमोरीस्ट्रीम
- 9. मेमोरीस्ट्रीम
- 10. एएसपी .NET एमवीसी सही उपयोगकर्ता नियंत्रण वास्तुकला
- 11. FileStreamResult के साथ, मेमोरीस्ट्रीम कैसे बंद है?
- 12. किसी नियंत्रण की संपत्ति को किसी अन्य नियंत्रण की संपत्ति में कैसे बांधें?
- 13. सिल्वरलाइट छवि नियंत्रण
- 14. WPF छवि नियंत्रण स्रोत
- 15. सी # gif छवि मेमोरीस्ट्रीम और पीछे (एनीमेशन खोना)
- 16. दो स्रोतों के लिए एक तत्व बांधें
- 17. विधि के लिए एएसपी.NET DropDownList डेटाTextField बांधें?
- 18. पीडीएफशर्प मेमोरीस्ट्रीम
- 19. एएसपी
- 20. एएसपी एमवीसी.नेट - कैसे KeyValuePair बांधने के लिए?
- 21. गतिशील जोड़ा तत्व के लिए fancybox कैसे बांधें?
- 22. विंडो पर चयन परिवर्तन के लिए हैंडलर को कैसे बांधें?
- 23. एक बीन वर्ग संपत्ति के लिए जेएलिस्ट को कैसे बांधें
- 24. गुइस में परिवर्तनीय करने के लिए स्ट्रिंग कैसे बांधें?
- 25. फ़ील्ड बनाने के लिए div चौड़ाई/ऊंचाई को कैसे बांधें?
- 26. एक combobox के लिए एक सूची कैसे बांधें? (Winforms)
- 27. प्रदाता के लिए विधि इंटरसेप्टर को कैसे बांधें?
- 28. बदसूरत एएसपी से छुटकारा पाने के लिए कैसे: मेनू झिलमिलाहट?
- 29. मेमोरीस्ट्रीम - स्ट्रिंगस्ट्रीम, स्ट्रिंग, अन्य?
- 30. डेल्फी, फ़ाइलस्ट्रीम और मेमोरीस्ट्रीम
। Http://imageresizing.net HttpModule इसे बहुत आसान बनाता है। –
आपके उत्तरों के लिए सभी को धन्यवाद। मैंने इस मुद्दे के लिए प्रेजेंटफैंडर का भी उपयोग किया, लेकिन मुझे उससे थोड़ा अधिक चाहिए। मैं जेनरेट करने वाले प्रेजेंटफैंडर को पैरामीटर पास करना चाहता हूं ग्रिड के लिए अलग-अलग छवियां और अंतर पंक्ति की आईडी द्वारा प्रदान किया जाएगा। इसलिए मुझे इस प्रेजेंटफैंडर को पैरामीटर पास करना होगा। क्या यह सुविधाजनक है? कोई सुझाव है? –