| 254 | return result; |
| 255 | } |
| 256 | transferLine(png, buffer, offset) { |
| 257 | let pngLine = png.read(); |
| 258 | let pngOffset = 0; |
| 259 | let pngX = 0; |
| 260 | let pngWidth = png.width; |
| 261 | if (png.channels == 1) { |
| 262 | let palette = png.palette; |
| 263 | while (pngX < pngWidth) { |
| 264 | let index = 4 * pngLine[pngOffset++]; |
| 265 | buffer[offset++] = palette[index++]; |
| 266 | buffer[offset++] = palette[index++]; |
| 267 | buffer[offset++] = palette[index++]; |
| 268 | buffer[offset++] = palette[index++]; |
| 269 | pngX++; |
| 270 | } |
| 271 | } |
| 272 | else if (png.channels == 2) { |
| 273 | while (pngX < pngWidth) { |
| 274 | let gray = pngLine[pngOffset++]; |
| 275 | buffer[offset++] = gray; |
| 276 | buffer[offset++] = gray; |
| 277 | buffer[offset++] = gray; |
| 278 | buffer[offset++] = pngLine[pngOffset++]; |
| 279 | pngX++; |
| 280 | } |
| 281 | } |
| 282 | else if (png.channels == 3) { |
| 283 | while (pngX < pngWidth) { |
| 284 | buffer[offset++] = pngLine[pngOffset++]; |
| 285 | buffer[offset++] = pngLine[pngOffset++]; |
| 286 | buffer[offset++] = pngLine[pngOffset++]; |
| 287 | buffer[offset++] = 255; |
| 288 | pngX++; |
| 289 | } |
| 290 | } |
| 291 | else { |
| 292 | while (pngX < pngWidth) { |
| 293 | buffer[offset++] = pngLine[pngOffset++]; |
| 294 | buffer[offset++] = pngLine[pngOffset++]; |
| 295 | buffer[offset++] = pngLine[pngOffset++]; |
| 296 | buffer[offset++] = pngLine[pngOffset++]; |
| 297 | pngX++; |
| 298 | } |
| 299 | } |
| 300 | } |
| 301 | |
| 302 | run() { |
| 303 | let inputPaths = this.inputPaths; |