react / wstein / node_modules / jest-cli / node_modules / node-haste / lib / parse / getImageSize.js
80668 views/**1* Copyright 2013 Facebook, Inc.2*3* Licensed under the Apache License, Version 2.0 (the "License");4* you may not use this file except in compliance with the License.5* You may obtain a copy of the License at6*7* http://www.apache.org/licenses/LICENSE-2.08*9* Unless required by applicable law or agreed to in writing, software10* distributed under the License is distributed on an "AS IS" BASIS,11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.12* See the License for the specific language governing permissions and13* limitations under the License.14*/1516function gif(buffer) {17return {18width: buffer.readUInt16LE(6),19height: buffer.readUInt16LE(8)20};21}2223function png(buffer) {24return {25width: buffer.readUInt32BE(16),26height: buffer.readUInt32BE(20)27};28}2930function jpeg(buffer) {31var len = buffer.length;32var offset = 2;33while (offset < len) {34var marker = buffer.readUInt16BE(offset);35offset += 2;36if (marker == 0xFFC0 || marker == 0xFFC2) {37return {38width: buffer.readUInt16BE(offset + 5),39height: buffer.readUInt16BE(offset + 3)40};41} else {42offset += buffer.readUInt16BE(offset);43}44}45return null;46}4748function getImageSize(buffer) {49if (buffer[0] == 0xFF && buffer[1] == 0xD8) {50return jpeg(buffer);51} else if (buffer[0] == 0x47 && buffer[1] == 0x49 && buffer[2] == 0x46) {52return gif(buffer);53} else if (buffer[0] = 0x89 && buffer[1] == 0x50 && buffer[2] == 0x4E &&54buffer[3] == 0x47) {55return png(buffer);56} else {57return null;58}59}6061module.exports = getImageSize;62getImageSize.gif = gif;63getImageSize.png = png;64getImageSize.jpeg = jpeg;656667