翻譯|行業資訊|編輯:李顯亮|2019-10-14 12:00:46.337|閱讀 500 次
概述:近期發布了Aspose.Imaging for .NET v19.10,其中對內存進行了優化,以更好的加載圖像。接下來我們用示例為大家演示使用API加載CMX映像時的內存優化用法。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Aspose.Imaging for .NET一種高級圖像處理控件,允許開發人員創建,編輯,繪制或轉換圖像。圖像導出和轉換是API核心功能之一,它允許在不安裝Photoshop應用程序或任何其他圖像編輯器的情況下保存為AdobePhotoshop?本機格式。
近期發布了Aspose.Imaging for .NET v19.10,其中對內存進行了優化,以更好的加載圖像。接下來我們用示例為大家演示使用API加載CMX映像時的內存優化用法。
>>歡迎下載Aspose.Imaging for .NET v19.10體驗
*10月狂歡季,限時購買Aspose系列產品,滿額即享減免優惠,最高立減10000元,還有驚喜紅包享不停!了解詳情點擊哦~~
有時需要加載大圖像,并且計算機上沒有足夠的可用RAM。 在這種情況下,加載圖像時會拋出OutOfMemory異常。 我們在此新API中引入了對受控內存規范的支持。 現在,您可以通過指定緩沖區大小來控制內存加載圖像的限制,這將確保內存使用量在這些范圍之內。
因此,如果您設置內存優化并且機器RAM內存不足,則與圖像相關的操作將開始使用硬盤驅動器。 這將確保以這種方式執行操作而不會出現內存不足異常,但是這將比使用RAM花費更多的時間。
新版本已為JPEG,CMX和PNG等圖像提供了受控內存優化技術支持。
以下示例演示了使用API加載CMX映像時的內存優化用法。
// Setting a memory limit of 10 megabytes for target loaded image using (Image image = Image.Load("example.cmx", new LoadOptions() { BufferSizeHint = 10 })) { image.Save( "output.png", new PngOptions() { VectorRasterizationOptions = new CmxRasterizationOptions { TextRenderingHint = TextRenderingHint.SingleBitPerPixel, SmoothingMode = SmoothingMode.AntiAlias, Positioning = PositioningTypes.DefinedByDocument} }); }
同樣,以下示例演示了使用API加載JPEG圖像時內存優化的用法。
// Setting a memory limit of 50 megabytes for target loaded image using (Image image = Image.Load("inputFile.jpg", new LoadOptions() { BufferSizeHint = 50 })) { image.Save("outputFile_Baseline.jpg", new JpegOptions { CompressionType = JpegCompressionMode.Baseline, Quality = 100 }); image.Save("outputFile_Progressive.jpg", new JpegOptions { CompressionType = JpegCompressionMode.Progressive }); image.Save("outputFile_Lossless.jpg", new JpegOptions { ColorType = JpegCompressionColorMode.YCbCr, CompressionType = JpegCompressionMode.Lossless, BitsPerChannel = 4 }); image.Save("outputFile_JpegLs.jpg", new JpegOptions { ColorType = JpegCompressionColorMode.YCbCr, CompressionType = JpegCompressionMode.JpegLs, JpegLsInterleaveMode = JpegLsInterleaveMode.None, JpegLsAllowedLossyError = 3, JpegLsPreset = null }); } // Setting a memory limit of 50 megabytes for target created image ImageOptionsBase createOptions = new JpegOptions { CompressionType = JpegCompressionMode.Progressive }; createOptions.BufferSizeHint = 50; createOptions.Source = new FileCreateSource("createdFile.jpg", false); using (var image = Image.Create(createOptions, 1000, 1000)) { image.Save(); // save to same location }
類似的基于Java的實現如下所示:
LoadOptions options = new LoadOptions(); options.setBufferSizeHint(50); // Setting a memory limit of 50 megabytes for target loaded image try (Image image = Image.load("inputFile.jpg", options)) { JpegOptions jpegOptions = new JpegOptions(); jpegOptions.setCompressionType(JpegCompressionMode.Baseline); jpegOptions.setQuality(100); image.save("outputFile_Baseline.jpg", jpegOptions); jpegOptions = new JpegOptions(); jpegOptions.setCompressionType(JpegCompressionMode.Progressive); image.save("outputFile_Progressive.jpg", jpegOptions); jpegOptions = new JpegOptions(); jpegOptions.setCompressionType(JpegCompressionMode.Lossless); jpegOptions.setColorType(JpegCompressionColorMode.YCbCr); jpegOptions.setBitsPerChannel((byte)4); image.save("outputFile_Lossless.jpg", jpegOptions); jpegOptions = new JpegOptions(); jpegOptions.setCompressionType(JpegCompressionMode.JpegLs); jpegOptions.setColorType(JpegCompressionColorMode.YCbCr); jpegOptions.setJpegLsInterleaveMode(JpegLsInterleaveMode.None); jpegOptions.setJpegLsAllowedLossyError(3); jpegOptions.setJpegLsPreset(null); image.save("outputFile_JpegLs.jpg", jpegOptions); } // Setting a memory limit of 50 megabytes for target created image try (JpegOptions createOptions = new JpegOptions()) { createOptions.setCompressionType(JpegCompressionMode.Progressive); createOptions.setBufferSizeHint(50); createOptions.setSource(new FileCreateSource("createdFile.jpg", false)); try (Image image = Image.create(createOptions, 1000, 1000)) { image.save(); // save to same location } }
ASPOSE技術交流QQ群(642018183)已開通,各類資源及時分享,歡迎交流討論!
掃描關注“慧聚IT”微信公眾號,及時獲取更多產品最新動態及最新資訊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn