2010-12-30 3 views
6

Tôi đã cố gắng sử dụng plugin jQuery Colorbox để hiển thị hình ảnh tôi có trong DB của mình thông qua tệp ashx. Thật không may nó chỉ nhổ một loạt các tiếng vô nghĩa ở đầu trang và không có hình ảnh. Điều này có thể được thực hiện? Dưới đây là những gì tôi có cho đến nay:Hiển thị hình ảnh trox bằng jQuery?

$(document).ready 
    (
     function() 
     { 
      $("a[rel='cbImg']").colorbox(); 
     } 
    ); 
... 
<a rel="cbImg" href="HuntImage.ashx?id=15">Click to see image</a> 

UPDATE:

tập tin ashx tôi đang viết nhị phân ra:

  context.Response.ContentType = "image/bmp"; 
      context.Response.BinaryWrite(ba); 
+0

ashx của bạn trả lại URL cho hình ảnh hoặc hình ảnh nhị phân là gì? – Chandu

+0

Nếu nó là nhị phân, tôi nghĩ bạn sẽ muốn có src thực tế cho hình ảnh của trình xử lý. –

+0

ashx ghi nhị phân cho hình ảnh. @Stefan, bạn có thể mở rộng trên đó không? –

Trả lời

10

Hộp màu có tùy chọn 'ảnh'. Nếu bạn đặt điều này thành true trong constructor của bạn thì nó sẽ buộc nó render ảnh.

$(target).colorbox({photo: true}); 
+0

Thú vị, tôi sẽ xem xét điều này. –

+0

@ Abe: Nó làm việc cho tôi với người xử lý của tôi. Tôi đang sử dụng /image.axd làm url của tôi nhưng tôi không thể thấy tại sao nó không hoạt động cho bạn. BTW phiên bản hộp màu của tôi là 1.3.16 bạn có thể muốn nâng cấp ... –

0

Bạn nên thiết lập các thuộc tính src ở phía khách hàng.

<img src="HuntImage.ashx?id=15" ..../> 

Việc xử lý

public class ImageRequestHandler: IHttpHandler, IRequiresSessionState 
    { 
     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.Clear(); 

      if(context.Request.QueryString.Count != 0) 
      { 
     //Get the stored image and write in the response. 
       var storedImage = context.Session[_Default.STORED_IMAGE] as byte[]; 
       if (storedImage != null) 
       { 
        Image image = GetImage(storedImage); 
        if (image != null) 
        { 
         context.Response.ContentType = "image/jpeg"; 
         image.Save(context.Response.OutputStream, ImageFormat.Jpeg); 
        } 
       } 
      } 
     } 

     private Image GetImage(byte[] storedImage) 
     { 
      var stream = new MemoryStream(storedImage); 
      return Image.FromStream(stream); 
     } 

     public bool IsReusable 
     { 
      get { return false; } 
     } 
    } 
+0

Tôi không hiểu ý bạn là gì. Ông có thể cho tôi một ví dụ? –

+0

@Abe Miessler: Đã chỉnh sửa câu trả lời. – dhinesh

+0

OP muốn hiển thị hình ảnh khi người dùng nhấp vào liên kết ... – Chandu

0

Dường như tôi không thể làm những gì tôi đang cố gắng sử dụng hộp thuốc vẽ với một hình ảnh ashx. Nếu bất cứ ai tìm thấy một cách xin vui lòng gửi nó ở đây.

Tôi đã xem xét xóa câu hỏi nhưng tôi sẽ bỏ qua câu hỏi đó khi người khác gặp phải vấn đề tương tự.

+2

Xem câu trả lời của James South, nó đã xuất hiện! –

0

Tìm chức năng này xung quanh dòng 124 (hộp thuốc vẽ 1.3.15)

// Checks an href to see if it is a photo. 
// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex. 
function isImage(url) { 
    return settings.photo || /\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i.test(url); 
} 

On line 127, thêm |ashx sau bmp trong (gif|png|jpg|jpeg|bmp) nên nó đọc như thế này:

// Checks an href to see if it is a photo. 
// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex. 
function isImage(url) { 
    return settings.photo || /\.(gif|png|jpg|jpeg|bmp|ashx)(?:\?([^#]*))?(?:#(\.*))?$/i.test(url); 
} 

này đang làm việc chỉ tốt cho tôi trong Sitecore 6.2 :)

+0

Rất thú vị. Tôi sẽ cung cấp cho một shot và cho bạn biết làm thế nào nó đi. –