Как увеличить изображение по пиксельно в react-native?

186
25 июля 2021, 14:50

есть картинка png формата маленькая 30 на 30 пикселей надо увеличить картинку по пиксельно до 300 на 300 без потери качества может больше. как это сделать?

Answer 1

Вот так можно сделать:

let img = new Image(), from = 30, to = 300, ratio = to/from; 
img.src = `https://picsum.photos/id/1/${30}/${30}`; 
img.crossOrigin = "anonymous"; 
img.onload = e => { 
  let ctx = canvas.getContext('2d'); 
  ctx.drawImage(img, 0, 0); 
  let d1 = ctx.getImageData(0, 0, from, from); 
  let d2 = ctx.createImageData(to, to); 
  for (let x = 0; x<to; x++) { 
    for (let y = 0; y<to; y++) { 
      let o1 = (y*to + x)*4; 
      let o2 = (Math.floor(y/ratio)*from + Math.floor(x/ratio))*4;     
      d2.data[o1 + 0] = d1.data[o2 + 0]; 
      d2.data[o1 + 1] = d1.data[o2 + 1]; 
      d2.data[o1 + 2] = d1.data[o2 + 2]; 
      d2.data[o1 + 3] = 255; 
    } 
  } 
  ctx.putImageData(d2, 0, 0);  
};
<canvas id=canvas width=300 height=300 />

Answer 2

Посмотри еще эту ссылку, там по поводу масштабирования изображения: https://facebook.github.io/react-native/docs/image#style

<Image source={require('./my-icon.png')} style={{ width: 300, height: 300, resizeMode: 'cover' }}/>
Answer 3

Использовать OpenGL, и настроить итоговое изображение шейдерами

Готовый компонент:

  • https://github.com/gre/gl-react-contrast-saturation-brightness

Шейдер + базовый компонент:

  • https://github.com/gre/gl-react-native-v2
  • https://github.com/rsn8887/Sharp-Bilinear-Shaders
READ ALSO
Поделитесь хорошими гайдами по созданию сайтов на Node [закрыт]

Поделитесь хорошими гайдами по созданию сайтов на Node [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах

176
Как сохранить переменную из функции?

Как сохранить переменную из функции?

Нужно сохранить переменные var AI_temp_A3_new_OUTGraph и var airflowM2Graph вне функции

237
Не работает переключатель городов

Не работает переключатель городов

Не работает переключатель городов на лендингеПодскажите пожалуйста что исправить в коде

203
как при делегировании добавить класс другому элементу

как при делегировании добавить класс другому элементу

Пробую сделать делегирование таким способомСтавлю один обработчик событий на весь код

238