2 qq 32710717 qq_32710717 于 2016.01.15 11:31 提问

图片上传,图片被压缩,求大神解答

asp.net图片上传,图片尺寸为2000:600(504kb),上传到服务器后变成了1600:480(62kb),百度后得出结果为要修改iis配置图片说明,修改后,通过input file上传的图片尺寸正常,但是通过js的webuploader上传,上传后的尺寸任然为1600:480,调试js发现,在js里获取的文件大小是正常,vs调试,ashx里面获取的图片大小改变了,求解

这段为input file 上传图片的后台代码
protected void btnUpload_Click(object sender, EventArgs e)
{
HttpFileCollection Files = HttpContext.Current.Request.Files;
for (int i = 0; i < Files.Count; i++)
{
HttpPostedFile PostedFile = Files[i];
if (PostedFile.ContentLength > 0)
{
string FileName = PostedFile.FileName;
string strExPrentFile = FileName.Substring(FileName.LastIndexOf(".") + 1);

                string sFilePath = "a.jpg";
                PostedFile.SaveAs(Server.MapPath(sFilePath));
            }
            else
            {

            }
        }
    }

这段为webuploader上传图片的后台代码
private void UpLoadFile(HttpContext context, string strUrl, string strToUrl,string userID)
{
Dsxy.Model.siteconfig siteConfig = new Dsxy.BLL.siteconfig().loadConfig();

        string _delfile = DTRequest.GetString("DelFilePath");
        HttpPostedFile _upfile = context.Request.Files["Filedata"];
        bool _iswater = false; //默认不打水印
        bool _isthumbnail = false; //默认不生成缩略图

        if (DTRequest.GetQueryString("IsWater") == "1")
            _iswater = true;
        if (DTRequest.GetQueryString("IsThumbnail") == "1")
            _isthumbnail = true;
        if (_upfile == null)
        {
            context.Response.Write("{\"status\": 0, \"msg\": \"请选择要上传文件!\"}");
            return;
        }
        UpLoad upFiles = new UpLoad();
        string msg = upFiles.fileSaveAs(_upfile, _isthumbnail, _iswater, strUrl, strToUrl,userID);
        //删除已存在的旧文件,旧文件不为空且应是上传文件,防止跨目录删除
        if (!string.IsNullOrEmpty(_delfile) && _delfile.IndexOf("../") == -1 
            && _delfile.ToLower().StartsWith(siteConfig.webpath.ToLower() + siteConfig.filepath.ToLower()))
        {
            Utils.DeleteUpFile(_delfile);
        }
        //返回成功信息
        context.Response.Write(msg);
        context.Response.End();
    }




            /// <summary>
    /// 文件上传方法
    /// </summary>
    /// <param name="postedFile">文件流</param>
    /// <param name="isThumbnail">是否生成缩略图</param>
    /// <param name="isWater">是否打水印</param>
    /// <returns>上传后文件信息</returns>
    public string fileSaveAs(HttpPostedFile postedFile, bool isThumbnail, bool isWater,string strUrl=null,string strToUrl=null,string userID=null)
    {
        Dsxy.Model.siteconfig siteConfig = new Dsxy.BLL.siteconfig().loadConfig();
        try
        {
            string fileExt = Utils.GetFileExt(postedFile.FileName); //文件扩展名,不含“.”
            int fileSize = postedFile.ContentLength; //获得文件大小,以字节为单位
            string fileName = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf(@"\") + 1); //取得原文件名

            string newFileName = Utils.GetRamCode() + "." + fileExt; //随机生成新的文件名
            //string newFileName = userID + "." + fileExt; //根据ID生成新的文件名
            string newThumbnailFileName = "thumb_" + newFileName; //随机生成缩略图文件名
            //string upLoadPath = GetUpLoadPath(); //上传目录相对路径
            string upLoadPath = strToUrl; //上传目录相对路径
            string fullUpLoadPath = AppDomain.CurrentDomain.BaseDirectory + upLoadPath;
            //try
            //{
            //    fullUpLoadPath = Utils.GetMapPath(upLoadPath); //上传目录的物理路径
            //}
            //catch (Exception)
            //{
            //    fullUpLoadPath = AppDomain.CurrentDomain.BaseDirectory + upLoadPath;
            //}
            string newFilePath = upLoadPath + newFileName; //上传后的路径
            string newThumbnailPath = upLoadPath + newThumbnailFileName; //上传后的缩略图路径

            //检查文件扩展名是否合法
            if (!CheckFileExt(fileExt))
            {
                return "{\"status\": 0, \"msg\": \"不允许上传" + fileExt + "类型的文件!\"}";
            }
            //检查文件大小是否合法
            if (!CheckFileSize(fileExt, fileSize))
            {
                return "{\"status\": 0, \"msg\": \"文件超过限制的大小!\"}";
            }
            //检查上传的物理路径是否存在,不存在则创建
            if (!Directory.Exists(fullUpLoadPath))
            {
                Directory.CreateDirectory(fullUpLoadPath);
            }

            //保存文件
            postedFile.SaveAs(fullUpLoadPath + newFileName);
            //如果是图片,检查图片是否超出最大尺寸,是则裁剪
            if (IsImage(fileExt) && (this.siteConfig.imgmaxheight > 0 || this.siteConfig.imgmaxwidth > 0))
            {
                Thumbnail.MakeThumbnailImage(fullUpLoadPath + newFileName, fullUpLoadPath + newFileName,
                    this.siteConfig.imgmaxwidth, this.siteConfig.imgmaxheight);
            }
            //如果是图片,检查是否需要生成缩略图,是则生成
            if (IsImage(fileExt) && isThumbnail && this.siteConfig.thumbnailwidth > 0 && this.siteConfig.thumbnailheight > 0)
            {
                Thumbnail.MakeThumbnailImage(fullUpLoadPath + newFileName, fullUpLoadPath + newThumbnailFileName,
                    this.siteConfig.thumbnailwidth, this.siteConfig.thumbnailheight, "Cut");
            }
            else
            {
                newThumbnailPath = newFilePath; //不生成缩略图则返回原图
            }
            //如果是图片,检查是否需要打水印
            if (IsWaterMark(fileExt) && isWater)
            {
                switch (this.siteConfig.watermarktype)
                {
                    case 1:
                        WaterMark.AddImageSignText(newFilePath, newFilePath,
                            this.siteConfig.watermarktext, this.siteConfig.watermarkposition,
                            this.siteConfig.watermarkimgquality, this.siteConfig.watermarkfont, this.siteConfig.watermarkfontsize);
                        break;
                    case 2:
                        WaterMark.AddImageSignPic(newFilePath, newFilePath,
                            this.siteConfig.watermarkpic, this.siteConfig.watermarkposition,
                            this.siteConfig.watermarkimgquality, this.siteConfig.watermarktransparency);
                        break;
                }
            }
            //处理显示的地址
            string imageUrl = siteConfig.imagespath;

            newFilePath = imageUrl + strUrl + newFilePath.Substring(newFilePath.LastIndexOf("/") + 1);
            newThumbnailPath = imageUrl + strUrl + newThumbnailPath.Substring(newThumbnailPath.LastIndexOf("/") + 1);
            //处理完毕,返回JOSN格式的文件信息
            return "{\"status\": 1, \"msg\": \"上传文件成功!\", \"name\": \""
                + fileName + "\", \"path\": \"" + newFilePath + "\", \"thumb\": \""
                + newThumbnailPath + "\", \"size\": " + fileSize + ", \"ext\": \"" + fileExt + "\"}";
        }
        catch
        {
            return "{\"status\": 0, \"msg\": \"上传过程中发生意外错误!\"}";
        }
    }

都是以http流来接收图片的,是什么原因呢,求解

1个回答

devmiao
devmiao   Ds   Rxr 2016.01.19 04:31
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
解决ue上传图片被压缩的一种方法
最近用UE上传图片,发现部分图片会出现失真的情况, 百度了很多,基本都是改的 config.json, 但是我的UE包里没有这个文件, 然后在config.js里头觉得这句话可以试着改改, 默认为900,改为一个比较大的值后,解决了
springmvc图片上传后压缩处理
后台代码: @RequestMapping(value = "/imageUpload", method = RequestMethod.POST) public @ResponseBody JsonResult imageUpload(HttpServletRequest request, Model model) { LOGGER.info("image upload begin.
图片压缩,上传后自动生成新的压缩图,可指定图片大小
上传图片后可指定生成压缩后的图片大小,等比例,非等比例缩放都行,有测试类
UEditor上传图片被压缩得模糊的解决方法
UEditor功能很强大,但是有个很不友好的功能:会在使用UEditor上传图片时,如果你的原始图片尺寸过大,就会先自动对图片大小进行压缩,然后将压缩的文件给servlet。也就是说,使用UEditor 上传图片后会导致图片大小发生改变并使图片变得模糊,而这是在用户毫不知情的情况下进行的操作,非常讨厌。 如果不想让上传的精美照片被UEditor 压缩得面目全非,可以通过以下方法禁止UEd
上传图片到服务器 对图片进行压缩
iPhone拍照 图片还是有点大    对图片不进行处理  上传到服务器  经查询一张图片大小约1.8M左右    因为一次性可能要上传几十张图片   1.8M一张图片   这明显有点大了 忘记从哪位网友那看来的,不过我项目中使用了,经过处理后图片一张大约200k吧 图片压缩代码    .h #import @interface UIImage (lxy) - (UIImage
iOS开发中的一些图片上传压缩处理
iphone中的图片通常存放在4个地法规,相册,应用程序包,沙盒,Internet,通过这四个地方我们可以处理应用图片 相册, iphone的相册包括摄影头交卷+用户计算机同步的部分照片,用户可以通过UIImagePickerController提供的交互对话框从相册中选择图像,但是,注意:相册中的图片机器路径,无法直接从应用程序中访问,只能用户去选择和使用相册图片 应用程序包 应用程序包可
WordPress防止自动压缩jpg图片
WordPress 默认会自动压缩上传的 jpg 图片。 这是一件好事,因为它使图像文件更小,这有利于节省带宽,减少加载时间,加速网页打开速度。 但在某些情况下,图像质量更重要,例如如你是个摄影爱好者或者说你的博客上主要是分享高清图像或者作品,那么高质量的图片就显得尤为重要了。那么,如何禁用wordpress的自动压缩图片功能呢?方法很简单,将以下代码添加到 functions.php 文件,快
Java实现图片的压缩(包括文件上传的图片压缩)
Java实现图片的压缩(包括文件上传的图片压缩)
WebUploader 设置原图上传,不启用压缩
var uploader = WebUploader.create({     // 选完文件后,是否自动上传。     auto: true,          // swf文件路径     swf: 'lib/webuploader/0.1.5/Uploader.swf',     // 文件接收服务端。     server: 'goods/getGoodsDesc
asp.net 上传图片,自动压缩裁剪图片。
mSchool_Picture m = new mSchool_Picture();      m.Name = tbxName.Text;      m.PicUrl = SavePicture(fupload, "schoolpic/", 700, 0);//直接调用方法,这里制定700就是固定宽度,高度自动调整 /// /// 通过FileUpload上传图片并压缩图片大小