美文网首页
用golang实现国土空间规划成果中jpg图片要求300dpi的

用golang实现国土空间规划成果中jpg图片要求300dpi的

作者: 开源GIS地图与信创 | 来源:发表于2022-12-11 13:45 被阅读0次

国土空间规划成果,要求jpeg图片至少有300dpi,
要求300dpi的原因主要是因为300dpi通常来说能保证打印机打印出来的成果看起来会比较清析。
为了实现这个需求,我把google,百度,github,golang官网甚至最火的chat-gpt都翻了个底朝天。
总之,结果就是目前golang生态体系中暂时还没有实现了获取jpg图片dpi的接口。
所以我打算写一个来补一下这个生态的缺口。

dpi和ppi是不是同一个东西?

要获取dpi首先得知道dpi是个什么东西。


image.png

还不清楚的可以自己去这个链接里面看,人家已经总结得很好了,我就不再赘述了。
https://blog.csdn.net/iteye_19871/article/details/81965791

jpg文件的编码规范

无论是golang标准库里面的image包,还是第二方包,都没有提供dpi获取的方法。
image包中通过Config可以获取到:ColorModel、Width、Height这三个属性

type Config struct {    
  ColorModel    color.Model     
  Width, Height int 
}

通过这几天最火的gpt来查找,说是可以用第三方库github.com/dsoprea/go-exif/v2来实现。

正在思考,请等待......

Go语言无法直接获取JPEG图片的DPI,可以通过使用第三方库exif来获取。

exif是一个Go语言库,用于解析JPEG图像的元数据,包括DPI。

使用exif库,可以使用以下代码获取JPEG图片的DPI:

package main

import (
    "fmt"
    "log"
    "os"
    "github.com/dsoprea/go-exif/v2"
)

func main() {
    // 打开图片文件
    file, err := os.Open("test.jpg")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // 解析图片文件的元数据
    exifData, err := exif.ReadExifData(file)
    if err != nil {
        log.Fatal(err)
    }

    // 获取DPI
    xResolution, err := exifData.Get("XResolution")
    if err != nil {
        log.Fatal(err)
    }
    yResolution, err := exifData.Get("YResolution")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("XResolution: %v, YResolution: %v\n", xResolution, yResolution)
}
image.png

很明显,代码不对,但是提供了一个很好的实现思路,可以按这个思路去找,每次查询返回的结果会不太一样。


image.png

最简单的方法是从二进制中去解析:

正规的官方网站:https://exiftool.org/TagNames/JPEG.html
jpg的编码大概长这样:

image.png

最有用的就是前面一部分了,我们要的信息在APP0里面。
可以看一下APP0里面的内容:


image.png

图中的00 60 00 60 ,x方向密度和y方向密度就是我们要的信息了。


image.png

我们把16进制的60转换一下,值正好是96,与我们在windows中看到的一样。


image.png
image.png

具体信息可参考大佬的网站:
https://blog.csdn.net/picone/article/details/123788128

相关文章

  • 全国国土空间规划“一张图”

    国土空间规划“一张图是以一张底图为基础,涵盖国土空间规划“五级三类”规划体系成果,形成可层层叠加打开的“一张图”,...

  • Java实现图片(jpg/png)转成TIF格式(300dpi)

    一、TIF/TIFF介绍 引用百度百科的一句话总结: 标签图像文件格式(Tag Image File Format...

  • 国土空间规划编制技术要点梳理

    摘要:本文通过梳理国土空间规划提出的背景、当前部分省市、行业机构关于国土空间规划研究的基本思路以及其他学者的研究观...

  • 国土空间规划

    最近,你应该会听到有人讨论国土空间规划,并且只要你留心就会发现,全国各省市都在进行着国土空间规划的编制。那么...

  • 国土空间规划

    空间规划是要在充分把握现状的基础上,结合实际,规划出适合地方发展,能为地方解决问题,为地方真正留下点东西。

  • 空间规划思考

    国土空间规划是为贯彻《中共中央国务院关于建立国土空间规划体系并监督实施的若干意见》,落实《自然资源部关于全面开展...

  • Swift 高性能图片圆角裁切

    //说明:JPG 图片不支持透明,使用jpg用imageNamed 方法 需要指定扩展名(没放在Assets中)/...

  • 学习的第二天

    今天两节课都很不错,很喜欢。 一个以站在高处的视角看国土空间规划,另一个以现在落地视角去看国土空间规划。很重要的是...

  • Golang 实现 批量 jpg png 格式图片转webp

    随着需求的增加,App 体积逐渐增大,精简App的最简单便捷的办法就是从资源文件(icon)入手. 谷歌推出的WE...

  • PPT存高分辨率图片

    科研组图很费劲,各大杂志要求图片分辨率基本最低300dpi 课题组组图一般都是用PS 由于种种原因个人用了PPT组...

网友评论

      本文标题:用golang实现国土空间规划成果中jpg图片要求300dpi的

      本文链接:https://www.haomeiwen.com/subject/icyfqdtx.html