Javascript 如何用JS/PHP解码base64编码的图像?(以前使用Actionscript编码)

Javascript 如何用JS/PHP解码base64编码的图像?(以前使用Actionscript编码),javascript,php,image,actionscript-3,base64,Javascript,Php,Image,Actionscript 3,Base64,我用ActionScript函数将图像编码为base64: private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; public static function encodeByteArray(_arg1:ByteArray):String { var _local3:Array; var _local5:uint;

我用ActionScript函数将图像编码为base64:

private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

public static function encodeByteArray(_arg1:ByteArray):String {
   var _local3:Array;
   var _local5:uint;
   var _local6:uint;
   var _local7:uint;
   var _local2 = "";
   var _local4:Array = new Array(4);
   _arg1.position = 0;
   while (_arg1.bytesAvailable > 0) {
        _local3 = new Array();
        _local5 = 0;
        while ((((_local5 < 3)) && ((_arg1.bytesAvailable > 0)))) {
            _local3[_local5] = _arg1.readUnsignedByte();
            _local5++;
        };
        _local4[0] = ((_local3[0] & 252) >> 2);
        _local4[1] = (((_local3[0] & 3) << 4) | (_local3[1] >> 4));
        _local4[2] = (((_local3[1] & 15) << 2) | (_local3[2] >> 6));
        _local4[3] = (_local3[2] & 63);
        _local6 = _local3.length;
        while (_local6 < 3) {
            _local4[(_local6 + 1)] = 64;
            _local6++;
        };
        _local7 = 0;
        while (_local7 < _local4.length) {
            _local2 = (_local2 + BASE64_CHARS.charAt(_local4[_local7]));
            _local7++;
        };
    };
    return (_local2);
}
public static function decodeToByteArray(_arg1:String):ByteArray{
    var _local6:uint;
    var _local7:uint;
    var _local2:ByteArray = new ByteArray();
    var _local3:Array = new Array(4);
    var _local4:Array = new Array(3);
    var _local5:uint;
    while (_local5 < _arg1.length) {
        _local6 = 0;
        while ((((_local6 < 4)) && (((_local5 + _local6) < _arg1.length)))) {
            _local3[_local6] = BASE64_CHARS.indexOf(_arg1.charAt((_local5 + _local6)));
            _local6++;
        };
        _local4[0] = ((_local3[0] << 2) + ((_local3[1] & 48) >> 4));
        _local4[1] = (((_local3[1] & 15) << 4) + ((_local3[2] & 60) >> 2));
        _local4[2] = (((_local3[2] & 3) << 6) + _local3[3]);
        _local7 = 0;
        while (_local7 < _local4.length) {
            if (_local3[(_local7 + 1)] == 64){
                break;
            };
            _local2.writeByte(_local4[_local7]);
            _local7++;
        };
        _local5 = (_local5 + 4);
    };
    _local2.position = 0;
    return (_local2);
}
private static const BASE64_CHARS:String=“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzo123456789+/=”;
公共静态函数encodeByteArray(_arg1:ByteArray):字符串{
var\u local3:数组;
var_local5:uint;
var_local6:uint;
var_local7:uint;
var_local2=“”;
var\u local4:Array=新数组(4);
_arg1.position=0;
而(_arg1.bytesavable>0){
_local3=新数组();
_local5=0;
而((((u local5<3))&&(((u arg1.bytesavable>0))){
_local3[\u local5]=\u arg1.readUnsignedByte();
_local5++;
};
_local4[0]=((u local3[0]&252)>>2);
_local4[1]=((((local3[0]&3)>4));
_local4[2]=((((local3[1]&15)>6));
_local4[3]=(u local3[2]&63);
_local6=_local3.length;
而(_local6<3){
_local4[(_local6+1)]=64;
_local6++;
};
_local7=0;
而(_local7<_local4.length){
_local2=(_local2+BASE64_CHARS.charAt(_local4[_local7]));
_local7++;
};
};
返回(_local2);
}
现在,我尝试在JS/PHP中解码字符串(没有成功),并返回图像。 以下是Actionscript解码功能:

private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

public static function encodeByteArray(_arg1:ByteArray):String {
   var _local3:Array;
   var _local5:uint;
   var _local6:uint;
   var _local7:uint;
   var _local2 = "";
   var _local4:Array = new Array(4);
   _arg1.position = 0;
   while (_arg1.bytesAvailable > 0) {
        _local3 = new Array();
        _local5 = 0;
        while ((((_local5 < 3)) && ((_arg1.bytesAvailable > 0)))) {
            _local3[_local5] = _arg1.readUnsignedByte();
            _local5++;
        };
        _local4[0] = ((_local3[0] & 252) >> 2);
        _local4[1] = (((_local3[0] & 3) << 4) | (_local3[1] >> 4));
        _local4[2] = (((_local3[1] & 15) << 2) | (_local3[2] >> 6));
        _local4[3] = (_local3[2] & 63);
        _local6 = _local3.length;
        while (_local6 < 3) {
            _local4[(_local6 + 1)] = 64;
            _local6++;
        };
        _local7 = 0;
        while (_local7 < _local4.length) {
            _local2 = (_local2 + BASE64_CHARS.charAt(_local4[_local7]));
            _local7++;
        };
    };
    return (_local2);
}
public static function decodeToByteArray(_arg1:String):ByteArray{
    var _local6:uint;
    var _local7:uint;
    var _local2:ByteArray = new ByteArray();
    var _local3:Array = new Array(4);
    var _local4:Array = new Array(3);
    var _local5:uint;
    while (_local5 < _arg1.length) {
        _local6 = 0;
        while ((((_local6 < 4)) && (((_local5 + _local6) < _arg1.length)))) {
            _local3[_local6] = BASE64_CHARS.indexOf(_arg1.charAt((_local5 + _local6)));
            _local6++;
        };
        _local4[0] = ((_local3[0] << 2) + ((_local3[1] & 48) >> 4));
        _local4[1] = (((_local3[1] & 15) << 4) + ((_local3[2] & 60) >> 2));
        _local4[2] = (((_local3[2] & 3) << 6) + _local3[3]);
        _local7 = 0;
        while (_local7 < _local4.length) {
            if (_local3[(_local7 + 1)] == 64){
                break;
            };
            _local2.writeByte(_local4[_local7]);
            _local7++;
        };
        _local5 = (_local5 + 4);
    };
    _local2.position = 0;
    return (_local2);
}
公共静态函数decodeToByteArray(_arg1:String):ByteArray{
var_local6:uint;
var_local7:uint;
var_local2:ByteArray=newbytearray();
var\u local3:Array=新数组(4);
var\u local4:Array=新数组(3);
var_local5:uint;
而(_local5<_arg1.length){
_local6=0;
而(((((u local6<4))和((((u local5+)((u local6)4));
_local4[1]=((((local3[1]&15)>2));

_local4[2]=((((u local3[2]&3)要输出base64图像,请使用以下格式:

<img src="data:image/png;base64,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" />


我试过了,但没用,因为base64编码显然不是标准的,也没用。这就是我在这里寻求帮助的原因。我添加了一个示例字符串,它在使用“encodeByteArray”和“decodeToByteArray”函数进行编码/解码时起作用