0

MVC アクションにアップロードされた画像から作成されたストリームを (imageageresizer を使用して) サイズ変更するのに本当に苦労しています。いくつかの観察:

  • inStream は元々適切に定義されており、コンテンツ (長さ >0) を含む画像ストリームが含まれています。

  • outStream の長さ = 0、位置 = 0、つまり空です。

  • 以下のコードは、dest 出力がローカル ハード ドライブへのパスである場合に機能しますが、dest がストリームの場合は機能しません (つまり、outStream をローカル パスに置き換えてファイルを保存すると機能します)。

  • ストリームの代わりに MemoryStream も使用してみましたが、うまくいきません。

誰もこれを解決しましたか?

これが私のコードです。どんな助けでも大歓迎です... thx

public ActionResult Save(IEnumerable<HttpPostedFileBase> files)
    {
        if (files != null)
        {
            foreach (var file in files)
            {
                Stream inStream = file.InputStream;
                Stream outStream = file.InputStream;

                var mySettings = new ResizeSettings
                {
                    MaxWidth = 100,
                    MaxHeight = 100,
                    Format = "JPG"
                };

                ImageResizer.ImageBuilder.Current.Build(inStream, outStream, mySettings);

                //upload outStream to CDN........
            }
        }

        // Return an empty string to signify success
        return Content("");
    }
4

1 に答える 1

0

入力 (読み取り専用) ストリームを出力 (書き込み) ストリームにすることはできません。また、読み取り元と同じストリームに書き込むこともできません。

これはおそらくうまくいきません:

            Stream inStream = file.InputStream;
            Stream outStream = file.InputStream;

MSDNのドキュメントは、I/O ストリームについて学び始めるのに適した場所です。

于 2013-08-31T18:23:39.217 に答える