ImageResizerライブラリを使用して、ASP.NETMVC4プロジェクトで簡単な画像のサイズ変更と回転を行っています。問題は、32 bpp CMYK JPEGファイルを処理するために使用すると、ArgumentExceptionで失敗することですが、(Windows Server 2008 R2)サーバーでのみ機能します。(WindowsVista)ラップトップでは正常に動作します。
問題のJPEGファイルは大きすぎず(700x500)、その他の点では非標準です。すべてのWebブラウザーとペイントは、問題のサーバー自体でも問題なく開くことができます。JPEGはImageMagickを使用して生成されており、ImageMagickにRGB色空間を使用するように依頼するとすべてが正常に機能します(-colorspace sRGB
。)
奇妙なことに、画像のサイズを変更するだけですべての場合に問題なく機能しますが、サーバー上で画像のサイズを変更して回転しようとすると失敗します。
いくつかの低レベルのWin32またはGDI+関数呼び出しがここで失敗しているように見えます-これがスタックトレースの関連部分です:
[ArgumentException: Parameter is not valid.]
System.Drawing.Graphics.CheckErrorStatus(Int32 status) +1621285
System.Drawing.Graphics.DrawImage(Image image, PointF[] destPoints, RectangleF srcRect, GraphicsUnit srcUnit, ImageAttributes imageAttr, DrawImageAbort callback, Int32 callbackData) +727
System.Drawing.Graphics.DrawImage(Image image, PointF[] destPoints, RectangleF srcRect, GraphicsUnit srcUnit, ImageAttributes imageAttr) +73
ImageResizer.ImageBuilder.RenderImage(ImageState s) +763
ImageResizer.ImageBuilder.Render(ImageState s) +174
ImageResizer.ImageBuilder.Process(ImageState s) +105
ImageResizer.ImageBuilder.buildToBitmap(Bitmap source, ResizeSettings settings, Boolean transparencySupported) +276
ImageResizer.ImageBuilder.buildToStream(Bitmap source, Stream dest, ResizeSettings settings) +149
ImageResizer.ImageBuilder.BuildJob(ImageJob job) +940
ImageResizer.ImageBuilder.Build(ImageJob job) +223
何か案は?