爲了簡單起見,可以說我有一個需要顯示圖像縮略圖的網頁。圖像位置存儲在數據庫中(圖像存儲在Amazon S3上)。是否有可能讓我的Web服務器在傳送到客戶端之前縮小大圖像?這樣我就不必存儲每個圖像的縮略圖,客戶端可以下載更小的文件。在asp.net中動態調整圖片的尺寸
回答
當然,沒問題。網上有大量資源顯示如何從數據庫中提取圖像。所以我不會在這裏重複。
加載完圖像後,可以使用.NET輕鬆縮小圖像。以下URL中有一個示例。它並不完全符合你的要求,但它確實生成了圖像的縮略圖。
http://blackbeltcoder.com/Articles/graphics/creating-website-thumbnails-in-asp-net
是的。
你做一個ASP.Net頁面,做Response.Clear(),在響應中設置Content-Type-header併發送圖像的二進制數據(也通過響應)。圖像可以隨時調整大小,但我建議在磁盤上緩存一段時間。然後,您將HTML中的圖像引用爲< img src =「http://server/yourimagepage.aspx」>。爲了在發送之前將圖像存儲在內存中,您可以使用MemStream。
我有示例代碼,但不在我面前現在,對不起。 :)
關於此主題的每個教程都過度簡化了這種情況,其中幾乎全部都泄漏了內存。這是一個很長的閱讀,但you should know about the 29 image resizing pitfalls所以你可以避免它們。
I wrote a library to do server-side dynamic image resizing safely。這不是在1個教程甚至10個程序中都能正確完成的事情。您可以解決80%的錯誤,但不是100%。當你做這些資源密集型的事情時,你不能容忍錯誤或內存泄漏。
核心庫是免費且開源的,但Amazon S3插件是Performance版本的一部分,它有249美元的許可費用。 Performance Edition附帶了S3,MS SQL,Azure,MongoDB GridFS和CloudFront集成的源代碼,示例和文檔,以及TB級磁盤緩存和memcaching。
從我可以訪問的統計數據看來,imageresizing.net是同類中使用最廣泛的庫。它運行至少5個社交網絡,並與圖像集合一起使用,大小可達20TB。大多數大型網站都使用S3插件,因爲本地存儲(甚至是SAN)的擴展性不是很好。
使用WebImage
類進來System.Web.Helpers.WebImage
你可以做到這一點。
你可以使用這個偉大的孩子在飛行中輸出調整大小的圖像。
示例代碼:
public void GetPhotoThumbnail(int realtyId, int width, int height)
{
// Loading photos’ info from database for specific Realty...
var photos = DocumentSession.Query<File>().Where(f => f.RealtyId == realtyId);
if (photos.Any())
{
var photo = photos.First();
new WebImage(photo.Path)
.Resize(width, height, false, true) // Resizing the image to 100x100 px on the fly...
.Crop(1, 1) // Cropping it to remove 1px border at top and left sides (bug in WebImage)
.Write();
}
// Loading a default photo for realties that don't have a Photo
new WebImage(HostingEnvironment.MapPath(@"~/Content/images/no-photo100x100.png")).Write();
}
更多在這裏:Resize image on the fly with ASP.NET MVC
這是一個偉大的教程,展示瞭如何使用WebImage
直接從ASP工作。NET網站:
- 1. 在CSS中調整圖片的尺寸
- 2. 在wp7中調整圖片的尺寸
- 3. 用codeigniter調整圖片的尺寸
- 4. 調整上傳圖片的尺寸
- 5. 上傳時調整圖片的尺寸
- 6. 在Outlook中自動調整VML背景圖片的尺寸
- 7. RS2008背景圖片尺寸調整
- 8. 用django調整圖片尺寸?
- 9. 使用Powerpoint vba調整圖片尺寸
- 10. JavaScript - 使用URL片段動態調整iframe跨域的尺寸
- 11. 動態調整身體尺寸(LibGDX)
- 12. 在wordpress中調整上傳圖片的尺寸
- 13. 在網頁中調整背景圖片的尺寸
- 14. 爲移動設備調整背景圖片的尺寸
- 15. 在Uplaod之前調整圖片尺寸在使用AJAX的Flash AS3中調整
- 16. 當屏幕尺寸減小時自動調整圖像尺寸
- 17. Node.js調整圖像尺寸
- 18. 調整尺寸圖像
- 19. 調整圖像尺寸PHP
- 20. 如何在matplotlib動畫中將圖形尺寸調整爲固定尺寸
- 21. 調整尺寸的woocommerce圖片尺寸,但產品包裝盒仍然太大
- 22. 在Ubuntu上運行ASP.NET 5的MVC 6調整圖像尺寸
- 23. Android中的圖片尺寸
- 24. tensorflow - 調整尺寸
- 25. 動態圖像尺寸div
- 26. gRaphael餅圖動態尺寸
- 27. SLD動態圖形尺寸
- 28. Android根據設備的屏幕尺寸調整圖像尺寸
- 29. 根據圖像尺寸調整ImageViews的尺寸
- 30. 整頁背景圖片尺寸建議
只是要注意的是,完整的圖像將始終需要轉移,唯一的區別是人就會將其往下拉電線。這就是說,你可以實現一個`HttpHandler`,它可以爲你做圖像處理。 – 2011-01-07 19:33:14
您提到您的映像位於S3上 - 您的應用程序是在單個服務器上運行,還是在雲應用程序中運行?如果要在單臺服務器上運行應用程序,那麼裝載大圖像並重新調整大小並不一定需要。如果尚未創建縮略圖,則可能只想創建一個縮略圖,然後將其存儲在磁盤上,以便不必在圖像上再次運行代碼,除非其更改。 – BenAlabaster 2011-01-07 19:35:40