图片上传压缩__绝望的zzk随笔,如果明知一件事是错的却还在坚持并打算继续坚持下去,这或者就是所谓的爱情了

本文详细介绍了图片上传和压缩的方法,包括如何使用Bitmap对象进行图片压缩,调整图片质量以减小文件大小,以及如何将图片保存到指定路径。此外,还提供了从HTTP请求中获取上传文件,并处理匿名上传限制的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图片上传压缩

/// <summary>
        /// 统一保存文件
        /// </summary>
        private void FileSave(HttpContext context, HttpPostedFile upFiles, bool isWater)
        {
            if (upFiles == null)
            {
                showError(context, "请选择要上传文件!");
                return;
            }
            //检查是否允许匿名上传
            /*if (sysConfig.fileanonymous == 0 && !new ManagePage().IsAdminLogin() && !new BasePage().IsUserLogin())
            {
                showError(context, "禁止匿名非法上传!");
                return;
            }*/
            //获取文件信息
            string fileName = upFiles.FileName;
            byte[] byteData = FileHelper.ConvertStreamToByteBuffer(upFiles.InputStream); //获取文件流
            //开始上传
            string remsg = new UpLoad().FileSaveAs(byteData, fileName, false, isWater);
            Dictionary<string, object> dic = JsonHelper.DataRowFromJSON(remsg);
            string status = dic["status"].ToString();
            string msg = dic["msg"].ToString();
            if (status == "0")
            {
                showError(context, msg);
                return;
            }
            string filePath = dic["path"].ToString(); //取得上传后的路径
            string filePath1 = filePath.Substring(0,filePath.LastIndexOf("."))+"1"+filePath.Substring(filePath.LastIndexOf("."), filePath.Length - filePath.LastIndexOf("."));
            //Bitmap bitmap=BitmapFactory.decodeFile(filePath);
            //tools.upload_ajax tu = new tools.upload_ajax();
            //tu.Compress(bitmap, filePath1, 50);
            Bitmap bmp = new Bitmap(filePath);
            //ystp(urlConvertorLocal(filePath), urlConvertorLocal(filePath1));
            Compress(bmp, urlConvertorLocal(filePath1), 50L);
            showSuccess(context, fileName, filePath1); //输出成功提示
        }
        /// <summary>
        /// 相对路径转绝对路径
        /// </summary>
        /// <param name="strUrl"></param>
        /// <returns></returns>
        private string urlConvertorLocal(string strUrl)
        {
            string tmpRootDir = HttpContext.Current.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录
            string urlPath = tmpRootDir + strUrl.Replace(@"/", @"/"); //转换成绝对路径
            return urlPath;
        }



#region 图片压缩

        /// <summary>

        /// 图片压缩(降低质量以减小文件的大小)

        /// </summary>

        /// <param name="srcBitMap">传入的Bitmap对象</param>

        /// <param name="destFile">压缩后的图片保存路径</param>

        /// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>

        public static void Compress(Bitmap srcBitMap, string destFile, long level)
        {

            Stream s = new FileStream(destFile, FileMode.Create);

            Compress(srcBitMap, s, level);

            s.Close();

        }

        /// <summary>

        /// 编码信息

        /// </summary>

        /// <param name="mimeType"></param>

        /// <returns></returns>

        private static ImageCodecInfo GetEncoderInfo(String mimeType)
        {

            int j;

            ImageCodecInfo[] encoders;

            encoders = ImageCodecInfo.GetImageEncoders();

            for (j = 0; j < encoders.Length; ++j)
            {

                if (encoders[j].MimeType == mimeType)

                    return encoders[j];

            }

            return null;

        }

        /// <summary>

        /// 图片压缩(降低质量以减小文件的大小)

        /// </summary>

        /// <param name="srcBitmap">传入的Bitmap对象</param>

        /// <param name="destStream">压缩后的Stream对象</param>

        /// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>

        private static void Compress(Bitmap srcBitmap, Stream destStream, long level)
        {

            ImageCodecInfo myImageCodecInfo;

            System.Drawing.Imaging.Encoder myEncoder;

            EncoderParameter myEncoderParameter;

            EncoderParameters myEncoderParameters;

            // Get an ImageCodecInfo object that represents the JPEG codec.

            myImageCodecInfo = GetEncoderInfo("image/jpeg");

            // Create an Encoder object based on the GUID

            // for the Quality parameter category.

            myEncoder = System.Drawing.Imaging.Encoder.Quality;

            // Create an EncoderParameters object.

            // An EncoderParameters object has an array of EncoderParameter

            // objects. In this case, there is only one

            // EncoderParameter object in the array.

            myEncoderParameters = new EncoderParameters(1);

            // Save the bitmap as a JPEG file with 给定的 quality level

            myEncoderParameter = new EncoderParameter(myEncoder, level);

            myEncoderParameters.Param[0] = myEncoderParameter;

            srcBitmap.Save(destStream, myImageCodecInfo, myEncoderParameters);

        }

        #endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值