| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * A namespace class for image encoding functions. All methods are static. | 6 * A namespace class for image encoding functions. All methods are static. |
| 7 */ | 7 */ |
| 8 function ImageEncoder() {} | 8 function ImageEncoder() {} |
| 9 | 9 |
| 10 ImageEncoder.MAX_THUMBNAIL_DIMENSION = 320; | 10 ImageEncoder.MAX_THUMBNAIL_DIMENSION = 320; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 * @param {BlobBuilder} blobBuilder | 64 * @param {BlobBuilder} blobBuilder |
| 65 * @param {HTMLCanvasElement} canvas The canvas with the image to be encoded. | 65 * @param {HTMLCanvasElement} canvas The canvas with the image to be encoded. |
| 66 * @param {ImageEncoder.MetadataEncoder} metadataEncoder | 66 * @param {ImageEncoder.MetadataEncoder} metadataEncoder |
| 67 * @param {Number} quality (0..1], Encoding quality, default is 0.5 | 67 * @param {Number} quality (0..1], Encoding quality, default is 0.5 |
| 68 */ | 68 */ |
| 69 ImageEncoder.buildBlob = function( | 69 ImageEncoder.buildBlob = function( |
| 70 blobBuilder, canvas, metadataEncoder, quality) { | 70 blobBuilder, canvas, metadataEncoder, quality) { |
| 71 | 71 |
| 72 quality = quality || 0.5; | 72 quality = quality || 0.5; |
| 73 | 73 |
| 74 ImageUtil.trace.resetTimer('dataurl'); |
| 74 // WebKit does not support canvas.toBlob yet so canvas.toDataURL is | 75 // WebKit does not support canvas.toBlob yet so canvas.toDataURL is |
| 75 // the only way to use the Chrome built-in image encoder. | 76 // the only way to use the Chrome built-in image encoder. |
| 76 var dataURL = | 77 var dataURL = |
| 77 canvas.toDataURL(metadataEncoder.getMetadata().mimeType, quality); | 78 canvas.toDataURL(metadataEncoder.getMetadata().mimeType, quality); |
| 79 ImageUtil.trace.reportTimer('dataurl'); |
| 78 | 80 |
| 79 var encodedImage = ImageEncoder.decodeDataURL(dataURL); | 81 var encodedImage = ImageEncoder.decodeDataURL(dataURL); |
| 80 | 82 |
| 81 var encodedMetadata = metadataEncoder.encode(); | 83 var encodedMetadata = metadataEncoder.encode(); |
| 82 | 84 |
| 83 ImageUtil.trace.resetTimer('blob'); | 85 ImageUtil.trace.resetTimer('blob'); |
| 84 if (encodedMetadata.byteLength != 0) { | 86 if (encodedMetadata.byteLength != 0) { |
| 85 var metadataRange = metadataEncoder.findInsertionRange(encodedImage); | 87 var metadataRange = metadataEncoder.findInsertionRange(encodedImage); |
| 86 blobBuilder.append(ImageEncoder.stringToArrayBuffer( | 88 blobBuilder.append(ImageEncoder.stringToArrayBuffer( |
| 87 encodedImage, 0, metadataRange.from)); | 89 encodedImage, 0, metadataRange.from)); |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 findInsertionRange = function(encodedImage) { return {from: 0, to: 0} }; | 198 findInsertionRange = function(encodedImage) { return {from: 0, to: 0} }; |
| 197 | 199 |
| 198 /** | 200 /** |
| 199 * Return serialized metadata ready to write to an image file. | 201 * Return serialized metadata ready to write to an image file. |
| 200 * The return type is optimized for passing to Blob.append. | 202 * The return type is optimized for passing to Blob.append. |
| 201 * @return {ArrayBuffer} | 203 * @return {ArrayBuffer} |
| 202 */ | 204 */ |
| 203 ImageEncoder.MetadataEncoder.prototype.encode = function() { | 205 ImageEncoder.MetadataEncoder.prototype.encode = function() { |
| 204 return new Uint8Array(0).buffer; | 206 return new Uint8Array(0).buffer; |
| 205 }; | 207 }; |
| OLD | NEW |