Beispiel #1
0
        private string compressjpg(string path, int compress)
        {
            try
            {
                string dir           = Path.GetDirectoryName(path);
                string filenamenoext = Path.GetFileNameWithoutExtension(path);
                string ext           = Path.GetExtension(path).ToLower();
                string desPath       = dir + "\\" + filenamenoext + "-min" + ext;
                BitMiracle.LibJpeg.JpegImage             jpeg = new BitMiracle.LibJpeg.JpegImage(path);
                BitMiracle.LibJpeg.CompressionParameters p    = new BitMiracle.LibJpeg.CompressionParameters();
                p.Quality           = compress;
                p.SmoothingFactor   = 50;
                p.SimpleProgressive = true;
                using (FileStream output = new FileStream(desPath, FileMode.Create)) {
                    jpeg.WriteJpeg(output, p);
                }



                //System.Drawing.Image b = System.Drawing.Image.FromFile(path);
                //System.Drawing.Imaging.ImageFlags flags = (System.Drawing.Imaging.ImageFlags) Enum.Parse( typeof( System.Drawing.Imaging.ImageFlags ), b.Flags.ToString());


                //EncoderParameters encoder = new EncoderParameters(1);
                //encoder.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, compress);
                //ImageCodecInfo imagecoder = GetEncoderInfo("image/jpeg");
                //System.Drawing.Image bitm = System.Drawing.Image.FromFile(path);
                //  string dir = Path.GetDirectoryName(path);
                //  string filenamenoext = Path.GetFileNameWithoutExtension(path);
                //string ext = Path.GetExtension(path).ToLower();
                // string desPath = dir+"\\"+filenamenoext+"-min"+ ext;

                // bitm.Save(desPath, imagecoder, encoder);

                // bitm.Dispose();
                // bitm = null;

                return(desPath);
            }
            catch (Exception ex)
            {
                return("");
            }
        }
Beispiel #2
0
        public Tuple <byte[], SaveResult> GenerateJPEGData()
        {
            var bmp   = GetSelectedImage();
            var img   = new BitMiracle.LibJpeg.JpegImage(bmp);
            var parms = new BitMiracle.LibJpeg.CompressionParameters();

            byte[] data = null;

            int q       = 100;
            int maxSize = Properties.Settings.Default.MaxFileSize;

            for (; q >= 75 && data == null; q--)
            {
                parms.Quality = q;
                using (var strm = new MemoryStream())
                {
                    img.WriteJpeg(strm, parms);
                    if (strm.Length < maxSize)
                    {
                        data = strm.ToArray();
                        break;
                    }
                }
            }

            if (data == null)
            {
                return(Tuple.Create(new byte[0], new SaveResult {
                    Success = false
                }));
            }

            return(Tuple.Create(
                       data,
                       new SaveResult
            {
                Success = true,
                Dimensions = bmp.Size,
                Quality = q,
                FileSize = data.Length
            }
                       ));
        }
Beispiel #3
0
        public Tuple<byte[], SaveResult> GenerateJPEGData()
        {
            var bmp = GetSelectedImage();
            var img = new BitMiracle.LibJpeg.JpegImage(bmp);
            var parms = new BitMiracle.LibJpeg.CompressionParameters();
            byte[] data = null;

            int q = 100;
            int maxSize = Properties.Settings.Default.MaxFileSize;
            for (; q >= 75 && data == null; q--)
            {
                parms.Quality = q;
                using (var strm = new MemoryStream())
                {
                    img.WriteJpeg(strm, parms);
                    if (strm.Length < maxSize)
                    {
                        data = strm.ToArray();
                        break;
                    }
                }
            }

            if (data == null)
                return Tuple.Create(new byte[0], new SaveResult { Success = false });

            return Tuple.Create(
                    data,
                    new SaveResult
                    {
                        Success = true,
                        Dimensions = bmp.Size,
                        Quality = q,
                        FileSize = data.Length
                    }
                );
        }