有什么办法能让网页显示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文件。