GL React Expo重新缩放拍摄的图像

时间:2019-01-23 13:48:13

标签: react-native opengl-es expo

我遇到一个问题,即Surface的输出图像会重新缩放,而无法保持与原始分辨率相同的分辨率。

一些输入和输出示例以及该表面的渲染尺寸。

示例1:

Original Image = {
  height: 2560,
  width: 1440,
}

Final Image = {
  height: 1518,
  width: 854,
}

Surface Size = {
  height: 284.625,
  width: 506
}

示例2:

Original Image = {
  height: 357,
  width: 412,
}

Final Image = {
  height: 936,
  width: 1080,
}

Surface Size = {
  height: 360,
  width: 311.9417475728156
}

要捕获图像,我使用以下代码:

getEditedImage = async () => {
  return await this.image.glView.capture({ quality: 1 });
};

其中image代表我要捕获图像的表面。

我希望输出的图像分辨率与输入的分辨率完全相同。有人知道我该如何实现吗?

1 个答案:

答案 0 :(得分:0)

您将在这里看到使用方法。

https://docs.expo.io/versions/v32.0.0/sdk/gl-view/

格式(字符串),压缩(数字)部分似乎是您需要的部分。


来源:https://docs.expo.io/versions/latest/sdk/take-snapshot-async/

此链接包含质量说明。

takeSnapshotAsync(视图,选项)

  • quality:数字-0到1之间的数字,其中0是最差的质量,1是最好的,默认为1
const targetPixelCount = 1080; // If you want full HD pictures
const pixelRatio = PixelRatio.get(); // The pixel ratio of the device
// pixels * pixelratio = targetPixelCount, so pixels = targetPixelCount / pixelRatio
const pixels = targetPixelCount / pixelRatio;

const result = await takeSnapshotAsync(this.imageContainer, {
  result: 'file',
  height: pixels,
  width: pixels,
  quality: 1,
  format: 'png',
});