From 813f0da00b2072e187519a89c33df4ee1665e669 Mon Sep 17 00:00:00 2001 From: Robert Adams Date: Sun, 19 Jan 2014 07:32:41 -0800 Subject: Add J2K decoder routine that converts directly to an image. --- .../Agent/TextureSender/J2KDecoderModule.cs | 20 ++++++++++++++++++++ OpenSim/Region/Framework/Interfaces/IJ2KDecoder.cs | 10 +++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs index d9b0eff..732781a 100644 --- a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs +++ b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs @@ -27,6 +27,7 @@ using System; using System.Collections.Generic; +using System.Drawing; using System.IO; using System.Reflection; using System.Text; @@ -182,6 +183,25 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender return DoJ2KDecode(assetID, j2kData, out layers, out components); } + public Image DecodeToImage(byte[] j2kData) + { + if (m_useCSJ2K) + return J2kImage.FromBytes(j2kData); + else + { + ManagedImage mimage; + Image image; + if (OpenJPEG.DecodeToImage(j2kData, out mimage, out image)) + { + mimage = null; + return image; + } + else + return null; + } + } + + #endregion IJ2KDecoder /// diff --git a/OpenSim/Region/Framework/Interfaces/IJ2KDecoder.cs b/OpenSim/Region/Framework/Interfaces/IJ2KDecoder.cs index 46d03b3..1cbd045 100644 --- a/OpenSim/Region/Framework/Interfaces/IJ2KDecoder.cs +++ b/OpenSim/Region/Framework/Interfaces/IJ2KDecoder.cs @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * @@ -25,6 +25,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using System.Drawing; using OpenMetaverse; using OpenMetaverse.Imaging; @@ -53,5 +54,12 @@ namespace OpenSim.Region.Framework.Interfaces /// number of components /// true if decode was successful. false otherwise. bool Decode(UUID assetID, byte[] j2kData, out OpenJPEG.J2KLayerInfo[] layers, out int components); + + /// + /// Provides a synchronous decode direct to an image object + /// + /// + /// decoded image or 'null' of unsuccessful + Image DecodeToImage(byte[] j2kData); } } -- cgit v1.1