ge from an URL.
    /// ````
    ///  if let url = NSURL(string: "http://www.c4ios.com/images/logo@2x.png") {
    ///      let img = Image(url: url)
    ///      canvas.add(img)
    /// }
    /// ````
    /// - parameter url: An NSURL object.
    convenience public init(url: URL) {
        self.init(url: url, scale: 1.0)
    }

    /// Initializes a new Image from an URL, with option for specifying the scale of the image.
    /// ````
    /// if let url = NSURL(string: "http://www.c4ios.com/images/logo@2x.png") {
    ///     let img = Image(url: url, scale: 2.0)
    ///     canvas.add(img)
    /// }
    /// ````
    /// - parameter url: An NSURL object.
    /// - parameter scale: The scale of the image.
    convenience public init(url: URL, scale: Double) {
        var error: NSError?
        var data: Data?
        do {
            data = try Data(contentsOf: url, options: NSData.ReadingOptions.mappedIfSafe)
        } catch let error1 as NSError {
            error = error1
            data = nil
        }
        if let d = data {
            self.init(data: d, scale: scale)
            return
        }
        if let e = error {
            C4Log("There was an error loading image data from url:\n ERROR: \(e.localizedDescription)\n URL:\(url)")
        }
        self.init()
    }

    /// Initializes a new Image using raw data. This method differs from `Image(data:...)` in that you can pass an array of
    /// raw data to the initializer. This works if you're creating your own raw images by changing the values of individual
    /// pixels. Pixel data should be RGBA.
    /// - parameter pixels: An array of raw pixel data.
    /// - parameter size: The size {w, h} of the image you're creating based on the pixel array.
    convenience public init(pixels: [Pixel], size: Size) {
        let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
        let bitmapInfo: CGBitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
        let bitsPerComponent: Int = 8
        let bitsPerPixel: Int = 32
   