From e18ec5f2b2831053c64abca2930dccbd42c8e6a7 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 28 Dec 2017 00:24:16 +0000 Subject: [PATCH] Changed inputType to ArrayBuffer for 'Frequency distribution', 'Chi Square' and 'Extract EXIF' operations. --- src/core/config/OperationConfig.js | 6 +++--- src/core/operations/Entropy.js | 18 ++++++++++-------- src/core/operations/Image.js | 7 +++---- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/core/config/OperationConfig.js b/src/core/config/OperationConfig.js index 354ec12..0a4a616 100755 --- a/src/core/config/OperationConfig.js +++ b/src/core/config/OperationConfig.js @@ -3287,7 +3287,7 @@ const OperationConfig = { "Frequency distribution": { module: "Default", description: "Displays the distribution of bytes in the data as a graph.", - inputType: "byteArray", + inputType: "ArrayBuffer", outputType: "html", args: [ { @@ -3300,7 +3300,7 @@ const OperationConfig = { "Chi Square": { module: "Default", description: "Calculates the Chi Square distribution of values.", - inputType: "byteArray", + inputType: "ArrayBuffer", outputType: "number", args: [] }, @@ -3740,7 +3740,7 @@ const OperationConfig = { "

", "EXIF data from photos usually contains information about the image file itself as well as the device used to create it.", ].join("\n"), - inputType: "byteArray", + inputType: "ArrayBuffer", outputType: "string", args: [], }, diff --git a/src/core/operations/Entropy.js b/src/core/operations/Entropy.js index aa9ed0b..db86072 100755 --- a/src/core/operations/Entropy.js +++ b/src/core/operations/Entropy.js @@ -81,22 +81,23 @@ const Entropy = { /** * Frequency distribution operation. * - * @param {byteArray} input + * @param {ArrayBuffer} input * @param {Object[]} args * @returns {html} */ runFreqDistrib: function (input, args) { - if (!input.length) return "No data"; + const data = new Uint8Array(input); + if (!data.length) return "No data"; let distrib = new Array(256).fill(0), percentages = new Array(256), - len = input.length, + len = data.length, showZeroes = args[0], i; // Count bytes for (i = 0; i < len; i++) { - distrib[input[i]]++; + distrib[data[i]]++; } // Calculate percentages @@ -138,21 +139,22 @@ const Entropy = { /** * Chi Square operation. * - * @param {byteArray} data + * @param {ArrayBuffer} data * @param {Object[]} args * @returns {number} */ runChiSq: function(input, args) { + const data = new Uint8Array(input); let distArray = new Array(256).fill(0), total = 0; - for (let i = 0; i < input.length; i++) { - distArray[input[i]]++; + for (let i = 0; i < data.length; i++) { + distArray[data[i]]++; } for (let i = 0; i < distArray.length; i++) { if (distArray[i] > 0) { - total += Math.pow(distArray[i] - input.length / 256, 2) / (input.length / 256); + total += Math.pow(distArray[i] - data.length / 256, 2) / (data.length / 256); } } diff --git a/src/core/operations/Image.js b/src/core/operations/Image.js index 2dd72df..afab21c 100644 --- a/src/core/operations/Image.js +++ b/src/core/operations/Image.js @@ -20,14 +20,13 @@ const Image = { * * Extracts EXIF data from a byteArray, representing a JPG or a TIFF image. * - * @param {byteArray} input + * @param {ArrayBuffer} input * @param {Object[]} args * @returns {string} */ runExtractEXIF(input, args) { try { - const bytes = Uint8Array.from(input); - const parser = ExifParser.create(bytes.buffer); + const parser = ExifParser.create(input); const result = parser.parse(); let lines = []; @@ -53,7 +52,7 @@ const Image = { * @author David Moodie [davidmoodie12@gmail.com] * @param {byteArray} input * @param {Object[]} args - * @returns {string} + * @returns {byteArray} */ runRemoveEXIF(input, args) { // Do nothing if input is empty