コード例 #1
0
        public byte[] GetBytes(string requestedFormat = null)
        {
            if (_transformations.Count > 0)
            {
                ApplyTransformationsAndSetProperties();
            }

            ImageFormat requestedImageFormat = null;

            if (!String.IsNullOrEmpty(requestedFormat))
            {
                // This will throw if image format is incorrect.
                requestedImageFormat = GetImageFormat(requestedFormat);
            }

            requestedImageFormat = requestedImageFormat ?? _initialFormat;
            Debug.Assert(requestedImageFormat != null, "Initial format can never be null");
            if (requestedImageFormat.Equals(this._currentFormat))
            {
                return((byte[])_content.Clone());
            }

            // Conversion from one format to another
            using (MemoryStream sourceBuffer = new MemoryStream(_content)) {
                using (Image image = Image.FromStream(sourceBuffer)) {
                    // if _properties are not initialized that means image did not go through any
                    // transformations yet and original byte array contains all metadata available
                    if (_properties != null)
                    {
                        WebImage.CopyMetadata(_properties, image);
                    }


                    using (MemoryStream destinationBuffer = new MemoryStream()) {
                        image.Save(destinationBuffer, requestedImageFormat);
                        return(destinationBuffer.ToArray());
                    }
                }
            }
        }