Ich habe ein byte-Array von einem String in Base64. Ich bekomme die URL, indem ich folgendes ausführe:
Das funktioniert auch schon sehr gut.
Im anderen Fall habe ich aber das Bild an sich als byte-Array. Bisher mache ich es wie folgt:
Weiß jemand, ob das optimiert werden kann?
Hinweise:
- Functions.btoa() ruft die btoa-Funktion von Vanilla Javascript auf.
- Die getBitsByByteArray():
- Die getCharacters():
Java:
String url = "data:image/jpeg;base64," + new String(byteArray, StandardCharsets.UTF_8);
Im anderen Fall habe ich aber das Bild an sich als byte-Array. Bisher mache ich es wie folgt:
Java:
String stringWithBits = ByteHelper.getBitsByByteArray(byteArray);
String s = Functions.getCharacters(stringWithBits);
String url = "data:image/jpeg;base64," + Functions.btoa(s);
Hinweise:
- Functions.btoa() ruft die btoa-Funktion von Vanilla Javascript auf.
- Die getBitsByByteArray():
Java:
public static String getBitsByByteArray(byte[] byteArray) {
if (map4 == null) {
map4 = new HashMap<>();
map4.put((byte) 0x00, "00000000");
map4.put((byte) 0x01, "00000001");
map4.put((byte) 0x02, "00000010");
map4.put((byte) 0x03, "00000011");
map4.put((byte) 0x04, "00000100");
map4.put((byte) 0x05, "00000101");
map4.put((byte) 0x06, "00000110");
map4.put((byte) 0x07, "00000111");
map4.put((byte) 0x08, "00001000");
map4.put((byte) 0x09, "00001001");
map4.put((byte) 0x0A, "00001010");
map4.put((byte) 0x0B, "00001011");
map4.put((byte) 0x0C, "00001100");
map4.put((byte) 0x0D, "00001101");
map4.put((byte) 0x0E, "00001110");
map4.put((byte) 0x0F, "00001111");
map4.put((byte) 0x10, "00010000");
map4.put((byte) 0x11, "00010001");
map4.put((byte) 0x12, "00010010");
map4.put((byte) 0x13, "00010011");
map4.put((byte) 0x14, "00010100");
map4.put((byte) 0x15, "00010101");
map4.put((byte) 0x16, "00010110");
map4.put((byte) 0x17, "00010111");
map4.put((byte) 0x18, "00011000");
map4.put((byte) 0x19, "00011001");
map4.put((byte) 0x1A, "00011010");
map4.put((byte) 0x1B, "00011011");
map4.put((byte) 0x1C, "00011100");
map4.put((byte) 0x1D, "00011101");
map4.put((byte) 0x1E, "00011110");
map4.put((byte) 0x1F, "00011111");
map4.put((byte) 0x20, "00100000");
map4.put((byte) 0x21, "00100001");
map4.put((byte) 0x22, "00100010");
map4.put((byte) 0x23, "00100011");
map4.put((byte) 0x24, "00100100");
map4.put((byte) 0x25, "00100101");
map4.put((byte) 0x26, "00100110");
map4.put((byte) 0x27, "00100111");
map4.put((byte) 0x28, "00101000");
map4.put((byte) 0x29, "00101001");
map4.put((byte) 0x2A, "00101010");
map4.put((byte) 0x2B, "00101011");
map4.put((byte) 0x2C, "00101100");
map4.put((byte) 0x2D, "00101101");
map4.put((byte) 0x2E, "00101110");
map4.put((byte) 0x2F, "00101111");
map4.put((byte) 0x30, "00110000");
map4.put((byte) 0x31, "00110001");
map4.put((byte) 0x32, "00110010");
map4.put((byte) 0x33, "00110011");
map4.put((byte) 0x34, "00110100");
map4.put((byte) 0x35, "00110101");
map4.put((byte) 0x36, "00110110");
map4.put((byte) 0x37, "00110111");
map4.put((byte) 0x38, "00111000");
map4.put((byte) 0x39, "00111001");
map4.put((byte) 0x3A, "00111010");
map4.put((byte) 0x3B, "00111011");
map4.put((byte) 0x3C, "00111100");
map4.put((byte) 0x3D, "00111101");
map4.put((byte) 0x3E, "00111110");
map4.put((byte) 0x3F, "00111111");
map4.put((byte) 0x40, "01000000");
map4.put((byte) 0x41, "01000001");
map4.put((byte) 0x42, "01000010");
map4.put((byte) 0x43, "01000011");
map4.put((byte) 0x44, "01000100");
map4.put((byte) 0x45, "01000101");
map4.put((byte) 0x46, "01000110");
map4.put((byte) 0x47, "01000111");
map4.put((byte) 0x48, "01001000");
map4.put((byte) 0x49, "01001001");
map4.put((byte) 0x4A, "01001010");
map4.put((byte) 0x4B, "01001011");
map4.put((byte) 0x4C, "01001100");
map4.put((byte) 0x4D, "01001101");
map4.put((byte) 0x4E, "01001110");
map4.put((byte) 0x4F, "01001111");
map4.put((byte) 0x50, "01010000");
map4.put((byte) 0x51, "01010001");
map4.put((byte) 0x52, "01010010");
map4.put((byte) 0x53, "01010011");
map4.put((byte) 0x54, "01010100");
map4.put((byte) 0x55, "01010101");
map4.put((byte) 0x56, "01010110");
map4.put((byte) 0x57, "01010111");
map4.put((byte) 0x58, "01011000");
map4.put((byte) 0x59, "01011001");
map4.put((byte) 0x5A, "01011010");
map4.put((byte) 0x5B, "01011011");
map4.put((byte) 0x5C, "01011100");
map4.put((byte) 0x5D, "01011101");
map4.put((byte) 0x5E, "01011110");
map4.put((byte) 0x5F, "01011111");
map4.put((byte) 0x60, "01100000");
map4.put((byte) 0x61, "01100001");
map4.put((byte) 0x62, "01100010");
map4.put((byte) 0x63, "01100011");
map4.put((byte) 0x64, "01100100");
map4.put((byte) 0x65, "01100101");
map4.put((byte) 0x66, "01100110");
map4.put((byte) 0x67, "01100111");
map4.put((byte) 0x68, "01101000");
map4.put((byte) 0x69, "01101001");
map4.put((byte) 0x6A, "01101010");
map4.put((byte) 0x6B, "01101011");
map4.put((byte) 0x6C, "01101100");
map4.put((byte) 0x6D, "01101101");
map4.put((byte) 0x6E, "01101110");
map4.put((byte) 0x6F, "01101111");
map4.put((byte) 0x70, "01110000");
map4.put((byte) 0x71, "01110001");
map4.put((byte) 0x72, "01110010");
map4.put((byte) 0x73, "01110011");
map4.put((byte) 0x74, "01110100");
map4.put((byte) 0x75, "01110101");
map4.put((byte) 0x76, "01110110");
map4.put((byte) 0x77, "01110111");
map4.put((byte) 0x78, "01111000");
map4.put((byte) 0x79, "01111001");
map4.put((byte) 0x7A, "01111010");
map4.put((byte) 0x7B, "01111011");
map4.put((byte) 0x7C, "01111100");
map4.put((byte) 0x7D, "01111101");
map4.put((byte) 0x7E, "01111110");
map4.put((byte) 0x7F, "01111111");
map4.put((byte) 0x80, "10000000");
map4.put((byte) 0x81, "10000001");
map4.put((byte) 0x82, "10000010");
map4.put((byte) 0x83, "10000011");
map4.put((byte) 0x84, "10000100");
map4.put((byte) 0x85, "10000101");
map4.put((byte) 0x86, "10000110");
map4.put((byte) 0x87, "10000111");
map4.put((byte) 0x88, "10001000");
map4.put((byte) 0x89, "10001001");
map4.put((byte) 0x8A, "10001010");
map4.put((byte) 0x8B, "10001011");
map4.put((byte) 0x8C, "10001100");
map4.put((byte) 0x8D, "10001101");
map4.put((byte) 0x8E, "10001110");
map4.put((byte) 0x8F, "10001111");
map4.put((byte) 0x90, "10010000");
map4.put((byte) 0x91, "10010001");
map4.put((byte) 0x92, "10010010");
map4.put((byte) 0x93, "10010011");
map4.put((byte) 0x94, "10010100");
map4.put((byte) 0x95, "10010101");
map4.put((byte) 0x96, "10010110");
map4.put((byte) 0x97, "10010111");
map4.put((byte) 0x98, "10011000");
map4.put((byte) 0x99, "10011001");
map4.put((byte) 0x9A, "10011010");
map4.put((byte) 0x9B, "10011011");
map4.put((byte) 0x9C, "10011100");
map4.put((byte) 0x9D, "10011101");
map4.put((byte) 0x9E, "10011110");
map4.put((byte) 0x9F, "10011111");
map4.put((byte) 0xA0, "10100000");
map4.put((byte) 0xA1, "10100001");
map4.put((byte) 0xA2, "10100010");
map4.put((byte) 0xA3, "10100011");
map4.put((byte) 0xA4, "10100100");
map4.put((byte) 0xA5, "10100101");
map4.put((byte) 0xA6, "10100110");
map4.put((byte) 0xA7, "10100111");
map4.put((byte) 0xA8, "10101000");
map4.put((byte) 0xA9, "10101001");
map4.put((byte) 0xAA, "10101010");
map4.put((byte) 0xAB, "10101011");
map4.put((byte) 0xAC, "10101100");
map4.put((byte) 0xAD, "10101101");
map4.put((byte) 0xAE, "10101110");
map4.put((byte) 0xAF, "10101111");
map4.put((byte) 0xB0, "10110000");
map4.put((byte) 0xB1, "10110001");
map4.put((byte) 0xB2, "10110010");
map4.put((byte) 0xB3, "10110011");
map4.put((byte) 0xB4, "10110100");
map4.put((byte) 0xB5, "10110101");
map4.put((byte) 0xB6, "10110110");
map4.put((byte) 0xB7, "10110111");
map4.put((byte) 0xB8, "10111000");
map4.put((byte) 0xB9, "10111001");
map4.put((byte) 0xBA, "10111010");
map4.put((byte) 0xBB, "10111011");
map4.put((byte) 0xBC, "10111100");
map4.put((byte) 0xBD, "10111101");
map4.put((byte) 0xBE, "10111110");
map4.put((byte) 0xBF, "10111111");
map4.put((byte) 0xC0, "11000000");
map4.put((byte) 0xC1, "11000001");
map4.put((byte) 0xC2, "11000010");
map4.put((byte) 0xC3, "11000011");
map4.put((byte) 0xC4, "11000100");
map4.put((byte) 0xC5, "11000101");
map4.put((byte) 0xC6, "11000110");
map4.put((byte) 0xC7, "11000111");
map4.put((byte) 0xC8, "11001000");
map4.put((byte) 0xC9, "11001001");
map4.put((byte) 0xCA, "11001010");
map4.put((byte) 0xCB, "11001011");
map4.put((byte) 0xCC, "11001100");
map4.put((byte) 0xCD, "11001101");
map4.put((byte) 0xCE, "11001110");
map4.put((byte) 0xCF, "11001111");
map4.put((byte) 0xD0, "11010000");
map4.put((byte) 0xD1, "11010001");
map4.put((byte) 0xD2, "11010010");
map4.put((byte) 0xD3, "11010011");
map4.put((byte) 0xD4, "11010100");
map4.put((byte) 0xD5, "11010101");
map4.put((byte) 0xD6, "11010110");
map4.put((byte) 0xD7, "11010111");
map4.put((byte) 0xD8, "11011000");
map4.put((byte) 0xD9, "11011001");
map4.put((byte) 0xDA, "11011010");
map4.put((byte) 0xDB, "11011011");
map4.put((byte) 0xDC, "11011100");
map4.put((byte) 0xDD, "11011101");
map4.put((byte) 0xDE, "11011110");
map4.put((byte) 0xDF, "11011111");
map4.put((byte) 0xE0, "11100000");
map4.put((byte) 0xE1, "11100001");
map4.put((byte) 0xE2, "11100010");
map4.put((byte) 0xE3, "11100011");
map4.put((byte) 0xE4, "11100100");
map4.put((byte) 0xE5, "11100101");
map4.put((byte) 0xE6, "11100110");
map4.put((byte) 0xE7, "11100111");
map4.put((byte) 0xE8, "11101000");
map4.put((byte) 0xE9, "11101001");
map4.put((byte) 0xEA, "11101010");
map4.put((byte) 0xEB, "11101011");
map4.put((byte) 0xEC, "11101100");
map4.put((byte) 0xED, "11101101");
map4.put((byte) 0xEE, "11101110");
map4.put((byte) 0xEF, "11101111");
map4.put((byte) 0xF0, "11110000");
map4.put((byte) 0xF1, "11110001");
map4.put((byte) 0xF2, "11110010");
map4.put((byte) 0xF3, "11110011");
map4.put((byte) 0xF4, "11110100");
map4.put((byte) 0xF5, "11110101");
map4.put((byte) 0xF6, "11110110");
map4.put((byte) 0xF7, "11110111");
map4.put((byte) 0xF8, "11111000");
map4.put((byte) 0xF9, "11111001");
map4.put((byte) 0xFA, "11111010");
map4.put((byte) 0xFB, "11111011");
map4.put((byte) 0xFC, "11111100");
map4.put((byte) 0xFD, "11111101");
map4.put((byte) 0xFE, "11111110");
map4.put((byte) 0xFF, "11111111");
}
StringBuilder sb = new StringBuilder();
for (byte b : byteArray) {
sb.append(map4.get(b));
}
return sb.toString();
}
- Die getCharacters():
Java:
public static String getCharacters(String bits) {
StringBuilder s = new StringBuilder();
for (int i = 0; i < bits.length() / 8; i++) {
int value = Integer.parseInt(bits.substring(8 * i, (i + 1) * 8), 2);
s.append((char) (value));
}
return s.toString();
}