4

画像をサーバーにアップロードする前に、ファイルのアップロードで画像のサイズを変更しようとしています。更新された画像のブロブを返す適切なプラグインを見つけましたが、アップロードで使用されているファイル オブジェクトにブロブを割り当てる方法が見つかりません。

ブロブは次のようになります: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQAB.....

        var file = e.target.files[0];
        canvasResize(file, {
            width: 300,
            height: 0,
            crop: false,
            quality: 80,
            //rotate: 90,
            callback: function (data, width, height) {
                // How to assign the data blob back to the file?
                //$(file).attr('src', data);

             // THEN submit with the smaller photo   
             $('#PhotoForm').ajaxSubmit(options);
            }
        });

ありがとう!

4

2 に答える 2

0

canvasResize で行き詰まっている場合は、他の画像操作ライブラリがたくさんあります。canvasResize よりも大きなオーバーヘッドがありますが、以前は Pixastic を使用して大きな効果が得られました。しかし、それはよりよく文書化されています。

于 2013-03-21T16:30:23.120 に答える
0

フォームの非表示フィールドにブロブを追加して送信するだけになりました。それを C# からのイメージとして保存するには、次の手順を実行します。

        var regex = new Regex(@"data:(?<mime>[\w/]+);(?<encoding>\w+),(?<data>.*)", RegexOptions.Compiled);
        var match = regex.Match(input.ImageBlob);
        var mime = match.Groups["mime"].Value;
        var encoding = match.Groups["encoding"].Value;
        var data = match.Groups["data"].Value;
        byte[] imagedata = Convert.FromBase64String(data);

        Image img = byteArrayToImage(imagedata);

        img.Save("someimagename.jpg");
于 2013-03-21T19:20:53.413 に答える