Ejemplo n.º 1
0
        public static long ProcessMediaItem(MediaItem mediaItem, CrunchOptions crunchOptions)
        {
            long resultantSize = 0;

            if (crunchOptions.IsEnabled)
            {
                if (mediaItem.MimeType == "image/jpeg" || mediaItem.MimeType == "image/pjpeg" ||
                    mediaItem.MimeType == "image/gif" || mediaItem.MimeType == "image/png")
                {
                    ICruncher cruncher = Cruncher.GetCruncher();
                    if (cruncher == null)
                    {
                        Log.Error("Could not find cruncher!", typeof(CrunchImage));
                        return(resultantSize);
                    }
                    if (mediaItem.Size >= cruncher.MaxImageSize)
                    {
                        return(resultantSize);
                    }
                    var mediaStream = mediaItem.GetMediaStream();
                    Job job         = Context.Job;
                    try
                    {
                        CrunchResult result = cruncher.CrunchStream(mediaStream, crunchOptions);

                        if (result == null)
                        {
                            Log.Error(string.Format("Could not shrink media file {0}", mediaItem.InnerItem.Paths.Path),
                                      typeof(CrunchImage));
                        }
                        Sitecore.Resources.Media.Media media = MediaManager.GetMedia(mediaItem);
                        using (var stream = new MemoryStream())
                        {
                            result.FileStream.CopyTo(stream);
                            stream.Position = 0;
                            resultantSize   = stream.Length;
                            media.SetStream(stream, Path.GetExtension(result.Format).TrimStart('.'));
                        }
                    }
                    catch (Exception exception)
                    {
                        if (job != null)
                        {
                            job.Status.LogError("Image could not be reduced in size");
                        }
                        Log.Error(string.Format("Image crunch failed: {0}", mediaItem.InnerItem.Paths.FullPath), exception,
                                  (typeof(CrunchImage)));
                    }
                }
            }
            return(resultantSize);
        }
Ejemplo n.º 2
0
        public void CreateRequest()
        {
            var assembly     = Assembly.GetExecutingAssembly();
            var resourceName = "InSitecore.ImageCrunch.SmushIt.Tests.TestResources.testPicture.jpg";

            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                var memoryStream = new MemoryStream();
                stream.CopyTo(memoryStream);
                memoryStream.Position = 0;
                var           cruncher = new SmushItCruncher();
                CrunchOptions crunchOptions;
                crunchOptions = new CrunchOptions();
                CrunchResult request = cruncher.CrunchStream(memoryStream, crunchOptions);
            }
        }