node.js + imagemagick
Добрый вечер, Булчане! :)
Возникла проблема, причём на довольно ровном месте. В своём чатике я решил добавить передачу фоточек и картиночек всяких. Собственно, в этом проблемы не возникло - влоб передаю данные картинки через socket.io или из браузера, или из мобилки. На сервере из сохраняю как то вот так: Код:
fs.writeFile( __dirname + "/uploads/images/"+filename, msgParsed.text, 'binary', function(err) { В общем? конкретно с этим - проблем нет, всё сохраняется и отображается как надо. Проблема в другом - я решил делать ресайз принимаемых картинок, ибо во первых - нефиг их в мегаразрешениях хранить, во вторых - надо делать превьюшки картинок, чтоб не грузить канал мегаданными. Ну, думаю, всё фигня, 5 минут и вопрос решён - гугл в руки и вперёд. Код:
apt-get install Imagemagick Код:
var easyimage = require('easyimage'); Код:
[Error: identify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.] Код:
[Error: identify: improper image header `.../uploads/images/image_8b7cea9f-a80a-4069-a326-273b6ecc8c65.png' @ error/png.c/ReadPNGImage/3930. Код:
data:image/png;base64,... |
Ответ: node.js + imagemagick
Проверь ручками содержимое сохранённого файла. У нормального png файла в начале должно стоять 0x89 P N G 0x0D.
Либо клиент отправляет не png, либо данные файла по пути обрастают какими-нибудь url-эскейпами. |
Ответ: node.js + imagemagick
Цитата:
Код:
data:image/jpeg;base64,iVBORw0KGgo... |
Ответ: node.js + imagemagick
Цитата:
Делегаты можно устанавливать отдельно. Хоть твоя проблема была другой. Также ты получаешь файл, и затем сохраняешь его - это чертовски не оптимально, т.к. при скачке этот файл храниться всё время в памяти, и лишь потом пишеться на жёсткий. Это не взлетит при большом объеме паралельных закачек. Заливай файлы через классический FormData используя POST запрос. И на стороне сервера, используя например busboy (имхо, самый збсь парсер файлов), сразу стримь в файл. По факту, nodejs gm модуль, что юзает тоже IM, умеет также работать с потоками, следственно можно вообще обрабатывать сразу на лету принимаемый файл и сохранять уже обработанные данные. |
Часовой пояс GMT +4, время: 11:39. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot