简体   繁体   English

ImageResizer-转换PSD文件时出错-System.ArgumentException:参数无效

[英]ImageResizer - Error converting PSD file - System.ArgumentException: Parameter is not valid

I have a system where i upload single files to the webserver. 我有一个将单个文件上传到Web服务器的系统。 Once uploaded i trigger a command to generate different sizes of the files. 上传后,我会触发一个命令来生成不同大小的文件。

The files uploaded are PSD and should be converted into pngs and jpgs. 上传的文件是PSD,应转换为png和jpg。

The upload works fine and i can see the file in the directory. 上传效果很好,我可以在目录中看到文件。 But when the "generate versions" command is fired i get this error 但是,当“生成版本”命令被触发时,出现此错误

"file may be corrupted empty, or may contain a png image with a single dimension greater than 65535" “文件可能已损坏为空,或者可能包含单个尺寸大于65535的png图像”

It's the line 这是线

generatedFiles.Add(ImageBuilder.Current.Build(file, strDestinationPath, objResizeCommand, false, true));

The full command is 完整的命令是

    public IList<string> GenerateVersions(decimal id, string file, string filename)
    {
        List<string> generatedFiles = new List<string>();

        foreach (var tCmdSets in db.IMG_SETTINGS_CMDSETS.Where("it.SETTINGS_FOLDER_ID = @folderid", new ObjectParameter("folderid", id)))
        {
            var strDestinationPath = ImageResizer.Util.PathUtils.RemoveExtension(Path.Combine(tmpDefaultFolder, tCmdSets.SETTINGS_CMDSET_DESTINATION, filename));
            ResizeSettings objResizeCommand =  new ResizeSettings(tCmdSets.SETTINGS_CMDSET_COMMAND);
            generatedFiles.Add(ImageBuilder.Current.Build(file, strDestinationPath, objResizeCommand, false, true));
        }
        return generatedFiles;
    }

and the variables fill until the error are: 变量填充到错误为止:

file    "c:\\www\\upload\\masters\\Products\\upload_test.psd"   string
objResizeCommand    {?maxwidth=800&maxheight=600&format=jpg}         ImageResizer.ResizeSettings
strDestinationPath  "c:\\www\\upload\\converted\\items\\big\\upload_test"   string

here is the stack trace 这是堆栈跟踪

[ArgumentException: Parameter is not valid.]
ImageResizer.ImageBuilder.LoadImage(Object source, ResizeSettings settings) in C:\Users\Administrator\Documents\resizer\Core\ImageBuilder.cs:186

[ImageCorruptedException (0x80004005): File may be corrupted, empty, or may contain a PNG image with a single dimension greater than 65,535 pixels.]
ImageResizer.ImageBuilder.LoadImage(Object source, ResizeSettings settings) in C:\Users\Administrator\Documents\resizer\Core\ImageBuilder.cs:190
ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings, Boolean disposeSource, Boolean addFileExtension) in C:\Users\Administrator\Documents\resizer\Core\ImageBuilder.cs:306
imageController.Classes.ImageHandling.GenerateVersions2(String original) in C:\Users\tha\Documents\Visual Studio 2010\Projects\imageController\imageController\Classes\ImageHandling.cs:26
imageController.Controllers.UploadController.UploadSingleFile(Decimal id, HttpPostedFileBase objFile) in C:\Users\tha\Documents\Visual Studio 2010\Projects\imageController\imageController\Controllers\UploadController.cs:62
lambda_method(Closure , ControllerBase , Object[] ) +261
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +208
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +55
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +263
System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +19
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +191
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
System.Web.Mvc.Controller.ExecuteCore() +116
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97
System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50
System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8897857
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

When using the managed API with ASP.NET, but not the HttpModule, you need to call 当使用托管API和ASP.NET而不是 HttpModule一起使用时,您需要调用

protected void Application_Start()
{
    ImageResizer.Configuration.Config.Current.Plugins.LoadPlugins();
}

in Global.asax.cs in addition to the following web.config settings 除了以下web.config设置外,还可以在Global.asax.cs

<configSections>
   <section name="resizer" type="ImageResizer.ResizerSection"  requirePermission="false"  />
</configSections>

<resizer>
  <plugins>
    <add name="PsdReader" />
  </plugins>
</resizer>

Otherwise the plugins will not be registered when you don't use the Http Modules. 否则,当您不使用Http模块时,插件将不会被注册。

You can verify the correct loading of plugins by calling 您可以通过调用以下命令来验证插件的正确加载

ImageResizer.Configuration.Config.Current.GetDiagnosticsPage()

This page also shows the supported filetypes (.psd, if plugin is loaded correctly). 该页面还显示了受支持的文件类型(.psd,如果正确加载了插件)。

Thanks to Nathanael (Owner of ImageResizer) for pointing me to this solution. 感谢Nathanael(ImageResizer的所有者)为我指出了这个解决方案。

SOLVED 解决了

You need to add the following to you web.config file 您需要将以下内容添加到您的web.config文件中

<configSections>
   <section name="resizer" type="ImageResizer.ResizerSection"/>
</configSections>

<resizer>
<sizelimits  />
<diskcache enabled="false" />
<remotereader signingKey="ag383ht23sag#laf#lafF#oyfafqewt;2t w  eyfwfefwqefqw" allowAllSignedRequests="true" />
<plugins>
  <add name="DiskCache" />
  <add name="PsdReader" />
  <add name="PrettyGifs" />
  <add name="Image404" />
  <add name="AnimatedGifs" />
  <add name="Gradient" />
  <add name="SimpleFilters" />
  <add name="RemoteReader" />
  <add name="AdvancedFilters" />
  <add name="CloudFront" />
  <add name="SeamCarving" />
  <add name="FolderResizeSyntax" />
  <add name="ImageHandlerSyntax" />
  <add name="MyCode.MyPlugins.SamplePlugin" />
  <add name="WhitespaceTrimmer" />
</plugins>
</resizer>

<httpModules>
  <add name="ImageResizingModule" type="ImageResizer.InterceptModule"/>
</httpModules>

<modules runAllManagedModulesForAllRequests="true">
  <add name="ImageResizingModule" type="ImageResizer.InterceptModule"/>
</modules>

\\T \\ t

Actually, all you need to do is add <add name="PsdReader" /> to the <plugins/> section. 实际上,您要做的就是将<add name="PsdReader" /><plugins/>部分。 The other stuff is only needed for the URL syntax, not the managed API. URL语法仅需要其他内容,而不是托管API。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 System.ArgumentException:参数无效 - System.ArgumentException: Parameter is not valid System.ArgumentException:&#39;参数无效。 (showDialog错误) - System.ArgumentException: 'Parameter is not valid.' (showDialog error) System.ArgumentException:“参数无效”内存流到图像 - System.ArgumentException: "Parameter is not Valid" Memorystream to Image 参数无效-System.argumentException-图像处理 - Parameter not valid - System.argumentexception - Image Handling DrawToBitmap - System.ArgumentException:参数无效 - DrawToBitmap - System.ArgumentException: Parameter is not valid System.ArgumentException:参数无效。 GraphicsPath.AddString - System.ArgumentException: Parameter is not valid. GraphicsPath.AddString System.ArgumentException:参数无效。 在C#中 - System.ArgumentException: Parameter is not valid. in C# 计时器中graphics.DrawLine上的“ System.ArgumentException参数无效” - 'System.ArgumentException parameter is not valid' at graphics.DrawLine in a timer System.ArgumentException:“不是有效的默认值参数名称:defaultValue”(NControl) - System.ArgumentException: 'Not a valid default value Parameter name: defaultValue' (NControl) System.ArgumentException-筛选器字符串无效 - System.ArgumentException - Filter string not valid
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM