anchor.diff:  import 'dart:io';
  -import 'dart:convert';
   import 'package:image/image.dart';
   
  +const int BYTE_SIZE = 4;
  +const int DEFAULT_WIDTH = 200;
  +
  +/**
  + * Takes a file and reads it in as bytes. These
  + * are then encoded into an image that is either 200
  + * pixels long or the max length possible given the data
  + */
   void encodeCsvToPng(List<int> bytes, String filename) {
  -  int width = 20;
  -  int height = bytes.length ~/ 200;
  +  int pixelCount = bytes.length ~/ BYTE_SIZE;
  +  int width = pixelCount < DEFAULT_WIDTH ? pixelCount : DEFAULT_WIDTH;
  +  int height = pixelCount ~/ width;
   
     if (height <= 0) {
       height = 1;
  
positive.code:   new File(filename).writeAsBytesSync(encodePng(imageToRender));
  }
  
  void decodePngToString(List<int> bytes, String filename) {
    Image image = decodePng(bytes);
  
    print(UTF8.decode(split4ByteInt(image.data)));
  }
  
  List<int> split4ByteInt(list) {
    var result = new List<int>();
    list.forEach((byte) {
      result.addAll([
  
negative.code:   String inputFile = arguments[arguments.length-2];
    String outputFile = arguments[arguments.length-1];
  
    print("Converting ${inputFile} to ${outputFile}");
  
    try {
      new File(inputFile).readAsBytes()
      .then((List<int> bytes) {
        isEncoding ? encodeCsvToPng(bytes, outputFile) : decodePngToString(bytes, outputFile);
      });
    } catch (error, stackTrace) {
      print("Caught Exception: ${error}\n${stackTrace}");
    }
    print("Finished!");
  }
  