Sometimes the photos captured from cameras are saved in a raw format. The RAW files are not ready for editing with any bitmap editor. By default GDI+ in windows application do not support RAW file formats. So while reading a RAW image file in .NET we can get exceptions like "Out of memory". Here we will discuss method to read RAW image file in C# application.
Using DCRaw
dcraw is an open-source computer program which is able to read numerous raw image formats, typically produced by high-end digital cameras. dcraw converts these images into the standard PPM and TIFF image formats. Here is the sample in C# to extarct image from RAW file using DCRaw executable
http://www.cybercom.net/~dcoffin/dcraw/
http://www.centrostudiprogressofotografico.it/en/dcraw/ (VS 2008 compiled code)
Using DCRaw
dcraw is an open-source computer program which is able to read numerous raw image formats, typically produced by high-end digital cameras. dcraw converts these images into the standard PPM and TIFF image formats. Here is the sample in C# to extarct image from RAW file using DCRaw executable
string PathToDcRawExecutable = "C:\\DcRaw\\dcraw-ms.exe";
var _sourceImage = (Bitmap)Image.FromStream(GetImageFromRaw("c:\\testimage.ORF", PathToDcRawExecutable));
public Stream GetImageFromRaw(string inputFile, string dcRawExe)
{
var startInfo = new ProcessStartInfo(dcRawExe)
{
Arguments = "-c -e \"" + inputFile + "\"",
RedirectStandardOutput = true,
UseShellExecute = false
};
var process = Process.Start(startInfo);
var image = Image.FromStream(process.StandardOutput.BaseStream);
var memoryStream = new MemoryStream();
image.Save(memoryStream, ImageFormat.Png);
return memoryStream;
}
Here are the links for DcRaw projecthttp://www.cybercom.net/~dcoffin/dcraw/
http://www.centrostudiprogressofotografico.it/en/dcraw/ (VS 2008 compiled code)
Oh, yes! Maybe this will work for me. I am having trouble figuring out how to use the DCRAw files.
ReplyDeleteOh my god. It worked! Almost first time. I made a cheap ActionResult and View called Converter, downloaded the 32 bit version (VS was in (x86) folder) and used a RAW image I had taken with my Canon 40D. I just changed the extentsion to .CR2 and output to .Tiff and it worked!!
DeleteDon't know what to do with the "var _sourceImage", but I also just saved the image to file location also and that worked. I would love to start a dialogue with you on this subject. You know, I searched and searched for days and this was first way I could get to work. So simple. You are geniuses. I do wonder what Arguments I can set. Is there a resolution or quality? Do you have any resources for these settings? Thank you very much and here is my code inside an MVC C# web application.
public ActionResult Converter()
{
string PathToDcRawExecutable = "C:\\DCRaw\\dcraw-9.27-ms-32-bit.exe";
var _sourceImage = (Bitmap)Image.FromStream(GetImageFromRaw("c:\\DCRaw\\Alf.CR2", PathToDcRawExecutable));
return View();
}
public Stream GetImageFromRaw(string inputFile, string dcRawExe)
{
var startInfo = new ProcessStartInfo(dcRawExe)
{
Arguments = "-c -e \"" + inputFile + "\"",
RedirectStandardOutput = true,
UseShellExecute = false
};
var process = Process.Start(startInfo);
var image = Image.FromStream(process.StandardOutput.BaseStream);
var memoryStream = new MemoryStream();
image.Save(memoryStream, ImageFormat.Tiff);
image.Save("C:\\DCRaw\\Converted.tiff", ImageFormat.Tiff);
return memoryStream;
}
Please note that in your example you have 2 different words:
DeleteGetImageDataFromRaw but the function is GetImageFromRaw.
Once I figured that out and what was going on, it worked like a charm.
So, I have that "var _sourceImage" filled up. Can I use that to make some resized .jpegs? (600x600 and thumbnail to be exact)
hey! good to know that it is helpful to you. Thanks! for letting me know about 2 different words.
DeleteAbout var _sourceImage this memory stream can be converted into an jpeg Image and then it can be resized. To extract thumbnail : http://newapputil.blogspot.in/2015/04/create-thumbnail-of-image-using-c.html
This comment has been removed by the author.
ReplyDelete