c# 从原始图像生成缩略图

c# generate thumbnails from raw images

我有一个 Asp.net Web 表单应用程序,当上传格式为

的原始图像文件时
 { "cr2", "raw", "dng", "nef", "raf", "orf", "srf", "sr2", "arw", "k25", "kdc", "dcr","mos",
        "pnx", "crw", "mrw", "pef" , "mef" , "rw2","a7","a7r"}

如何从原始图像生成缩略图?

您可以在您的 .net 上使用 dcraw.exe 应用程序 运行 application.you 可以在 the link.

下载它

先将raw图片保存到本地,使用代码:

string dcrawPath = "dcraw.exe";
ProcessStartInfo startInfo = new ProcessStartInfo();
string inputImagePath= "input Raw Image Path/";
string outputImagePath = "output Raw Image Path/";
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.FileName = dcrawPath;
string commandArg1 = string.Format("\"{0}\"", outputImagePath);
string commandArg2 = string.Format("\"{0}\"", inputImagePath);
startInfo.Arguments = "-u ";
startInfo.Arguments += commandArg1;
startInfo.Arguments += " -e ";
startInfo.Arguments += commandArg2;
startInfo.Arguments += " -T";
using (Process exeProcess = Process.Start(startInfo))
  {
   exeProcess.WaitForExit();
   string stdout = exeProcess.StandardOutput.ReadToEnd();
   string stderr = exeProcess.StandardError.ReadToEnd();
   Console.WriteLine("Exit code : {0}", exeProcess.ExitCode);
  }

将原始图像放入 inputImagePath 变量

您可以在 outputImagePath 变量中找到图像

尝试 GDPicture.NET 组件。它支持不同的 RAW 格式并且易于使用,但不是免费的。要生成缩略图,请使用 CreateThumbnailCreateThumbnailHQ 方法 GdPictureImaging class:

  using (var imaging = new GdPictureImaging())
  {
    int pictureId = imaging.CreateGdPictureImageFromFile(filepath);
    if (pictureId == 0)
    {
      MessageBox.Show("Error: " + imaging.GetStat().ToString());
      return;
    }
    int thumbnailImgId = imaging.CreateThumbnail(pictureId, 20, 20);
    imaging.SaveAsPNG(thumbnailImgId, "thumbnail.png");
    imaging.ReleaseGdPictureImage(thumbnailImgId);
    imaging.ReleaseGdPictureImage(pictureId);
  }