如何在python中将原始图像转换为png? [英] how to convert raw images to png in python?

查看:588
本文介绍了如何在python中将原始图像转换为png?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含200多个raw图像的文件夹,我想将它们全部转换为png或任何其他格式,在C中这很容易,但是在python中我不知道它是怎么做的

I have a folder containing over 200 raw images, i want to convert all of them to png or any other format, In C it's pretty easy but in python i don't know how it's done

我找到了这个片段

#import struct
import numpy, array, PIL, Image
from struct import *

#declarations
arr1D   =   array.array('H') #H is unsigned short

#------------------------------------
#read 16 bit unsigned raw depth image
#------------------------------------
w           =   640
h           =   480
fid        =   open('/home/salman/salman/NiSimpleRead_salman/data/200.raw')
#fid         =   open('/home/salman/test.raw')
numBytes    =   w*h
arr1D.read(fid, numBytes)
fid.close()

#----------------------------------------------------
#convert to float numpy array -> scale -> uint8 array
#----------------------------------------------------
numarr = numpy.array(arr1D, dtype='float');
numarr = 255 - (numarr*255.0/numarr.max())
numarr.shape = (h,w)
numarr = numarr.astype('uint8')

#======================
#IMAGES
#======================

#2D numpy array -> image 
#-----------------------
img        =   Image.fromarray(numarr); #print data.dtype.name

#image view and save
#-------------------
#img.show()
img.save('/home/salman/test.png')

这是我唯一能找到的代码段,这是正确的方法吗?

This is the only snippet that I can find, is this the proper way to do it?

推荐答案

应该类似于:

rawData = open("foo.raw" 'rb').read()
imgSize = (x,y)
# Use the PIL raw decoder to read the data.
# the 'F;16' informs the raw decoder that we are reading 
# a little endian, unsigned integer 16 bit data.
img = Image.fromstring('L', imgSize, rawData, 'raw', 'F;16')
img.save("foo.png")

使用手册第一个参数是图像模式,可以是以下任何一种:

The First argument is the image mode and can be any from:

  • 1(1位像素,黑白,每字节存储一个像素)
  • L(8位像素,黑白)
  • P(8位像素,使用调色板映射到任何其他模式)
  • RGB(3x8位像素,真彩色)
  • RGBA(4x8位像素,带透明蒙版的真彩色)
  • CMYK(4x8位像素,分色)
  • YCbCr(3x8位像素,彩色视频格式)
  • I(32位有符号整数像素)
  • F(32位浮点像素)

这篇关于如何在python中将原始图像转换为png?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆