Jimp - URI возвращаются из функции, но изображения не отображаются в src <img> - PullRequest
0 голосов
/ 06 апреля 2020

Я кодирую в Svelte и использую jimp , чтобы размыть изображение перед отображением. Тем не менее, я успешно размываю и возвращаю URI изображений (вошли в систему и отображали URI в консоли), но изображения не отображаются, когда я вызываю функцию в <img> src.

В частности:

У меня есть функция processImage:

const processImage = async imgMeta => {

const buf = Buffer.from(imgMeta.replace(/^data:image\/\w+;base64,/, ""), 'base64');

Jimp.read(buf, (err, image) => {
  if (err) throw err;
  else {
    image.blur(20)
    .getBase64(Jimp.AUTO, function (err, newImageURI) {          
      return newImageURI;
  })}})

И я вызываю ее в:

<img src={processedImage} alt="preview" />

Но изображение не отображается. Это шансы, как я и ожидал, это должно сработать.

1 Ответ

0 голосов
/ 06 апреля 2020

Произошла ошибка при возвращении значения из функции обратного вызова. newImageURI не будет возвращено.

Ожидание синхронного и getBase64Asyn c от Jimp являются полезными решениями:

newImageURI = await image.blur(20).getBase64Async(Jimp.AUTO);
return newImageURI;

И вызов функции в теле остается неизменным:

{#await processImage(item.files[0].preview)} 
<p>...waiting</p> 
{:then processedImage}
<img src={processedImage} alt="preview" /> 
{/await} 

Я получил этот пробег.

...