.net使用magick.net将图像jpg转换为jp2

时间:2017-12-15 18:47:14

标签: .net image

我有转换图像的ZERO经验。我正在处理的网络应用程序上传图片并将jpeg图像转换为jp2图像。当我尝试编写图像时出现错误。错误是:权限被拒绝,无法打开图像。

  1. 如何解决错误?
  2. 有更好的方法吗?
  3. .net code:

        using System;
        using System.Web;
        using System.IO;
        public class fileUploader : IHttpHandler {
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                try
                {
                    string dirFullPath = HttpContext.Current.Server.MapPath("~/MediaUploader/");
                    string[] files;
                    int numFiles;
                    files = System.IO.Directory.GetFiles(dirFullPath);
                    numFiles = files.Length;
                    numFiles = numFiles + 1;
                    string str_image = "";
    
                    foreach (string s in context.Request.Files)
                    {
                        HttpPostedFile file = context.Request.Files[s];
                        string fileName = file.FileName;
                        string fileExtension = file.ContentType;
    
                        if (!string.IsNullOrEmpty(fileName))
                        {
                            fileExtension = Path.GetExtension(fileName);
                            str_image = "MyPHOTO_" + numFiles.ToString() + fileExtension;
                            string pathToSave_100 = HttpContext.Current.Server.MapPath("~/MediaUploader/") + str_image;
                            file.SaveAs(pathToSave_100);
    using (MagickImage image = new MagickImage(pathToSave_100))
    {
      image.Format = Magick.jp2
      image.Write(pathToSave_100); //get error here: 
    }
                        }
                    }
                    //  database record update logic here  ()
    
                    context.Response.Write(str_image);
                }
                catch (Exception ac) 
                { 
    
                }
            }
    
            public bool IsReusable {
                get {
                    return false;
                }
            }
    
        }
    

2 个答案:

答案 0 :(得分:0)

网站通常在特殊用户帐户下运行,该帐户与您自己的帐户不具有相同的权限。检查此特殊帐户是否具有您~/MediaUploader/路径的写入权限。

答案 1 :(得分:0)

根据您托管网站的方式和位置,您可能无权写入您尝试撰写的文件夹。

如果您可以使用〜/ App_Data下面的文件夹,请尝试。按照惯例,大多数情况下的这个位置可用于存储需要在ASP .NET中进行写访问的文件,因此默认情况下可以使用您的生产系统进行写入。