我遇到了一个问题,即 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
表示我从中捕获图像的表面。
我希望输出图像分辨率与输入完全相同。有人知道我该如何实现它吗?
你在这里看到如何使用。
https://docs.expo.io/versions/v32.0.0/sdk/gl-view/
格式(字符串),压缩(数字)部分似乎是您需要的部分。
来源: https://docs.expo.io/versions/latest/sdk/take-snapshot-async/
此链接包含质量说明。
takeSnapshotAsync(view, options)
- 质量 : 数字 -- 介于 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',
});