【问题标题】:c# generate thumbnails from raw imagesc# 从原始图像生成缩略图
【发布时间】:2016-04-09 05:23:31
【问题描述】:

我有一个 Asp.net Web 表单应用程序,当上传具有格式的原始图像文件时

 { "cr2", "raw", "dng", "nef", "raf", "orf", "srf", "sr2", "arw", "k25", "kdc", "dcr","mos",
        "pnx", "crw", "mrw", "pef" , "mef" , "rw2","a7","a7r"}

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

【问题讨论】:

    标签: c# image thumbnails


    【解决方案1】:

    您可以使用 dcraw.exe 应用程序在您的 .net 应用程序上运行。您可以在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 变量中找到图片

    【讨论】:

      【解决方案2】:

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

        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);
        }
      

      【讨论】:

      • @FreeDeveloper:我在答案中添加了一个小代码示例。有关更多信息,您可以在此处查看他们的网站 CreateThumbnail 或此处 CreateThumbnailHQ
      • 我需要从原始图像而不是 .png 格式生成缩略图
      • @FreeDeveloper:上面的代码从filepath 获取图片并通过SaveAsPNG 将生成的缩略图存储为.png。当然,您可以将生成的缩略图作为位图:imaging.GetBitmapFromGdPictureImage(thumbnailImgId).
      猜你喜欢
      • 2013-01-01
      • 2016-05-03
      • 2011-12-21
      • 1970-01-01
      • 2018-10-28
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多