有什么办法能让网页显示dng格式的照片呢?用什么语言可以实现?
喷火的尾巴
让网页显示dng格式的照片的最好方式,就是事先将dng格式的照片转换成可以在html网页中展示的图片格式,例如jpg格式或者png格式。
至于能实现这种对dng格式进行(无损)转换的后台语言,那很多,必将常见能做这事,或者说这方面资源比较多的是,我感觉C++和python都适合。
以python为例,适合将dng格式转换成png、jpg格式的开源库不只一种选择,opencv和pillow应该是可以的,但是这里要介绍的是使用“rawpy”和“imageio”的组合使用来实现将dng格式图片转换成jpg格式或者png格式。
第一步、安装rawpy和imageio
就是用pip来安装,如果是python2,则是:
sudo pip install rawpy sudo pip install imageio
如果是python3,就是:
sudo pip3 install rawpy sudo pip3 install imageio
上面都是老生常谈的事情。
第二步、如何使用rawpy实现对dng格式图片的格式转换
首先给点别人的参考资源吧:
我这还找到一段把dng转换成tiff格式图片的代码:
import rawpy import imageio raw = rawpy.imread('xxx.dng') rgb = raw.postprocess() imageio.imsave('xxx.tiff', rgb)
你可以试试,因为上面这个代码是我想象的,没有进行实践过,你自己试试。
但是我感觉 rawpy + dng 这个方向是对的。
算了,你还是直接用GitHub那小哥的代码吧:
import argparse import glob import os import sys import imageio import rawpy parser = argparse.ArgumentParser(description='Tool for DNG to PNG conversion.') parser.add_argument('--source', '-s', metavar='', help='Folder where DNG files are') parser.add_argument('--destination', '-d', metavar='', help='Folder where PNG files are saved') args = parser.parse_args() if args.source is None: source = str(os.getcwd()) print("Source path is current path " + source) else: source = str(args.source) if not os.path.exists(source): sys.exit(args.source + ' path not found') if args.destination is None: dest = input('Where do you want to save your PNG files? [' + source + '/PNG]: ') if len(dest) == 0: dest = source + '/PNG' else: dest = str(args.destination) if not os.path.exists(dest): if dest != source + '/PNG': b = input(dest + ' does not exists. Do you want to create it? [yes]: ') if len(b) != 0 and b.lower()[0] == 'n': sys.exit() os.makedirs(dest) files = glob.glob(source + '/*.DNG') if len(files) == 0: sys.exit('No DNG files found in ' + source) count = 0 print('Elaborating...') for i in files: raw = rawpy.imread(i) rgb = raw.postprocess() newpath = dest + '/' + i.split('/')[-1][:-3] + 'png' imageio.imwrite(newpath, rgb) count += 1 print(str(int(count*100/len(files))) + '% ' + str(count) + '/' + str(len(files)) + ': ' + newpath) print('Job finished!')
也就是安装好imageio和rawpy后,把上面的代码复制下来成为文件convert.py
以如下方式进行使用:
python3 convert.py --source 要被转换的dng格式的文件路径 --destination 转换后保存成png的文件路径
最后再推荐一个跨平台的软件包来实现对dng格式文件的转换,叫“UFRaw”,官网点击这里。
各种平台都可以,这里我只以MacOS为例,如果是MacOS则可以用Homebrew来安装UFRaw:
brew install ufraw
使用方式很简单:
./dng-to-jpeg xxx.dng xxx.jpg
xxx.dng就是你想转换的dng格式,xxx.jpg就是你要生成的目标jpg文件。