105 lines
3.4 KiB
Markdown
105 lines
3.4 KiB
Markdown
# jpeg-js
|
|
|
|
A pure javascript JPEG encoder and decoder for node.js
|
|
|
|
[](http://travis-ci.org/eugeneware/jpeg-js)
|
|
|
|
## Installation
|
|
|
|
This module is installed via npm:
|
|
|
|
``` bash
|
|
$ npm install jpeg-js
|
|
```
|
|
|
|
## Example Usage
|
|
|
|
### Decoding JPEGs
|
|
|
|
``` js
|
|
var jpegData = fs.readFileSync('grumpycat.jpg');
|
|
var rawImageData = jpeg.decode(jpegData);
|
|
```
|
|
|
|
### Encoding JPEGs
|
|
|
|
``` js
|
|
var width = 320, height = 180;
|
|
var frameData = new Buffer(width * height * 4);
|
|
var i = 0;
|
|
while (i < frameData.length) {
|
|
frameData[i++] = 0xFF; // red
|
|
frameData[i++] = 0x00; // green
|
|
frameData[i++] = 0x00; // blue
|
|
frameData[i++] = 0xFF; // alpha - ignored in JPEGs
|
|
}
|
|
var rawImageData = {
|
|
data: frameData,
|
|
width: width,
|
|
height: height
|
|
};
|
|
var jpegImageData = jpeg.encode(rawImageData, 50);
|
|
```
|
|
|
|
## License
|
|
|
|
### Decoding
|
|
|
|
This library builds on the work of two other JPEG javascript libraries,
|
|
namely [jpgjs](https://github.com/notmasteryet/jpgjs) for the decoding
|
|
which is licensed under the Apache 2.0 License below:
|
|
|
|
Copyright 2011 notmasteryet
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
|
|
### Encoding
|
|
|
|
The encoding is based off a port of the JPEG encoder in [as3corelib](https://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/images/JPGEncoder.as).
|
|
|
|
The port to Javascript was done by by Andreas Ritter, www.bytestrom.eu, 11/2009.
|
|
|
|
The Adobe License for the encoder is:
|
|
|
|
**Adobe**
|
|
|
|
Copyright (c) 2008, Adobe Systems Incorporated
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are
|
|
met:
|
|
|
|
* Redistributions of source code must retain the above copyright notice,
|
|
this list of conditions and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
* Neither the name of Adobe Systems Incorporated nor the names of its
|
|
contributors may be used to endorse or promote products derived from
|
|
this software without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|