0

その変換をテキスト形式に行う必要があるため、jsonを介して画像/メディアを送信する必要があります。jQuery/Javascriptを介してそれを達成するにはどうすればよいですか?

4

2 に答える 2

1

あなたはこの投稿であなたの答えを見つけることができますjavascriptで画像データを取得します

function getBase64Image(img) {
    // Create an empty canvas element
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;

    // Copy the image contents to the canvas
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);

    // Get the data-URL formatted image
    // Firefox supports PNG and JPEG. You could check img.src to guess the
    // original format, but be aware the using "image/jpg" will re-encode the image.
    var dataURL = canvas.toDataURL("image/png");

    return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

imgこの関数にタグを渡す必要があります。詳細については、JavaScriptで画像をバイナリデータに変換するを参照してください。

于 2013-02-06T10:34:24.983 に答える
0

バイナリ データをダウンロードして JavaScript に文字列として渡す機能が jQuery には備わっていないことを何度か読んだことがあります。次に、この質問に出くわしました。それは私に考えさせられ、私は$.ajax()このように見えるラッパーを書きました(はい、主なビットを示すために単純化されています):

ajaxWrapper = function(url, dataType, callback, headers) {
    return $.ajax({
        url: url,
        dataType: dataType == "binary" ? "text" : dataType,
        mimeType: dataType == "binary" ? "text/plain; charset=x-user-defined" : undefined,
        headers: headers || {}
    }).done(function(data, status, jqXHR) {
        callback(data, status, jqXHR);
    });
}

そして、Unicode を扱っている場合、コールバックには次の行が含まれます。

data = btoa(unescape(encodeURIComponent(data)));

またはそれ以外の場合は単に

data = btoa(data);

言い換えれば、 $.ajax() のドキュメントdataTypeを読んだら、 「バイナリ」を追加するだけです。

私は jQuery 1.7.1 を使用していますが、それ以降のバージョンでも機能しない理由がわかりません。

于 2013-02-18T21:54:20.733 に答える