Я создаю простую базу данных для небольших файлов с пиксельным изображением. Изображения сохраняются непосредственно в базе данных:Использование Imagemagick с файлом из коллекции mongo
Template.pixUpload.events({
'change .myPixInput': function(event, template) {
event.preventDefault();
var file = event.target.files[0]; //assuming 1 file only
if (!file) return;
var reader = new FileReader();
reader.onload = function(event){
MyPix.insert({
binary: reader.result,
createdAt: new Date
});
}
reader.readAsDataURL(file);
}
})
Идея заключается в том, чтобы иметь возможность изменять изображения на своем пути обратно в браузер, масштабировать их на лету (если что-то не слишком медленно). Поэтому я пытаюсь прочитать изображение из db и масштабировать его с помощью Imagemagick, прежде чем отображать его. Она не работает - и я не могу найти что-нибудь полезное, я смог бы понять:
Template.pixList.helpers({
'thumbnail': function() {
var bin = this.binary;
var thumb = new FileReader();
Imagemagick.convert(['bin', '-filter', 'point', '64x64', 'thumb']);
return thumb;
}
})
Wow thanks @Ethaan! Медленно перебираем это. Первый вопрос касается функции 'beforeWrite'. Он меняет расширение файла и тип, хранящийся в db. Например, если я загружаю анимированный GIF, он фактически не конвертируется и будет по-прежнему вести себя как GIF - даже если его расширение файла будет изменено на PNG. Какова цель делать что-то подобное? Типы файлов и расширения должны быть сохранены или файл должен быть полностью преобразован, правильно? – Kai
Хороший вопрос @kai, Иногда вам также необходимо изменить метаданные файла, прежде чем он будет сохранен в конкретном хранилище. Например, у вас может быть функция transformWrite, которая изменяет тип файла, поэтому вам нужна функция beforeWrite, которая изменяет тип расширения и тип содержимого для соответствия. ** из FSCollection Readme ** – Ethaan
Было бы неплохо отметить этот ответ как «принятый», если бы он помог вам также помочь другим пользователям с той же проблемой или, по крайней мере, «голосом», я просто понял, что это второй Я помог вам, и любой из двух брендов, как «принято» или «голосуйте», очень приятно помочь, но было бы хорошо знать, действительно ли я помогаю или просто путаю вас больше. – Ethaan