locked
How should I read an image as a byte array? RRS feed

  • Question

  • I'm trying to read an image as a byte array through a openAsync()

     

    pageData.photofile.openAsync(Windows.Storage.FileAccessMode.read).then(function (stream) {
    
                    var inputStream = stream.getInputStreamAt(0);
    
                    var reader = new Windows.Storage.Streams.DataReader(inputStream);
    
                    var size = stream.size;
    
                    if (size > 0) {
    
                        reader.loadAsync(size).then(function () {
    
                            var fileContent = new Array(size);
    
                            reader.readBuffer(fileContent); //.readString(size);
    
    
    
                            displayDebugMessage(fileContent.toString());
    


     

    I overrided toString method of Array:

     

    Array.prototype.toString = function () {
    
            var retStr = "[";
    
            for (var x in this) {
    
                if (isNaN(x)) {
    
                    val = (typeof(this[x]) == 'string') ? "'" + this[x] + "'" : this[x];
    
                    retStr += x + ":" + val + ", ";
    
                } else {
    
                    val = (typeof(this[x]) == 'string') ? "'" + this[x] + "'" : this[x];
    
                    retStr += val + ", ";
    
                }
    
            }
    
            return retStr + "]";
    
        }
    
    
    

    But it returned nothing. It looks like I have made some mistakes in reading the byte array. How should I do?

    Tuesday, November 15, 2011 4:58 AM

Answers

  • Hi Sungsoo,

     

    Try something like this:

    var reader = new Windows.Storage.Streams.DataReader(inputStream);
    reader.loadAsync(size).then(
    function (readsize) {
    var array = new Array(readsize);
    reader.readBytes(array);

     

    -Jeff


    Jeff Sanders (MSFT)
    Tuesday, November 15, 2011 2:40 PM
    Moderator

All replies

  • In addition, when I seen the fileContent variable in Watch window, the "fileContent.length" is correctly set and when I put "fileContent[0]", it shows "undefined".
    Tuesday, November 15, 2011 5:01 AM
  • Hi Sungsoo,

     

    Try something like this:

    var reader = new Windows.Storage.Streams.DataReader(inputStream);
    reader.loadAsync(size).then(
    function (readsize) {
    var array = new Array(readsize);
    reader.readBytes(array);

     

    -Jeff


    Jeff Sanders (MSFT)
    Tuesday, November 15, 2011 2:40 PM
    Moderator
  • Thanks Jeff!

    The method is the answer :)

    Wednesday, November 16, 2011 12:18 AM