我在 Gatsby 网站上工作,并从 Sanity.io 采购我的内容。与通过我自己的文件系统获取的图像相比,我从 Sanity.io CDN 返回的一些图像质量显着降低。我认为这与设置的图像尺寸不正确有关,但我无法弄清楚为什么它错误地设置了此图像。我正在尝试使用 gatsby-image 渲染这两个元素。
彼此相邻加载的图像的屏幕截图:
我的 graphQL 查询:
const HEADER_QUERY = graphql`
query HeaderQuery {
HeaderImages: sanityHomepageSettings {
heroOverlayImage {
asset {
fluid(maxWidth: 300) {
...GatsbySanityImageFluid
}
}
}
}
LocalHeaderImages: file(relativePath: {eq: "happy.png"}) {
childImageSharp {
fluid(maxWidth: 300) {
...GatsbyImageSharpFluid
}
}
}
}
`
我在哪里渲染这两个图像:
<div style={{backgroundColor: 'white', width: '100%'}}>
<Img fluid={data.HeaderImages.heroOverlayImage.asset.fluid} />
<Img fluid={data.LocalHeaderImages.childImageSharp.fluid} />
</div>
当我检查我的 devtools 中的图像元素时,我可以看到来自 sanity 的图像的currentSrc如下:
https://cdn.sanity.io/images/<environment-removed>/production/<long-name-removed>-275x132.png?w=150&h=72&fit=crop&fm=webp
看起来这里设置的图像尺寸不正确,因为宽度和高度约为原始图像的 50%。从上面的字符串可以看出,w=150&h=72似乎正在调整图像大小。
最后,在启动 Gatsby 环境时,我在控制台中收到以下警告:
warn: The type `SanityImageAsset` does not explicitly define the field `childImageSharp`. On types with the `@dontInfer` directive, or with the `infer` extension set to `false`, automatically
这里有什么不正确的地方,还是我在设置过程中遗漏了什么?作为说明,我已经清除并重新安装了我的节点模块、公共和缓存文件夹。