<pre name="code" class="csharp"><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:18px;">用官方给出的合成的图片到tiff的例子改成从 用图片的base64字符串 合成tiff。</span></span>
<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<span style="font-family: Arial, Helvetica, sans-serif;"> /// <summary></span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="csharp"> /// 将base64转化成图片 /// 如果有多个图片的base64 则将文件合成或单独生成一个tiff图片 /// </summary> /// <param name="base64str">图片的 base64 string[] </param> /// <param name="fileNames">当不合成时 单独文件名的 List</param> /// <param name="path">要保存的目录名</param> /// <param name="isMultipage">是否合成为一个图片</param> /// <param name="error">out 一个 List<int> 其中包含出错的 index </param> /// <returns>生成文件所在的路径的数组</returns> public static string[] base64ToTiff(string[] base64str, string[] fileNames,string path, bool isMultipage,out List<int> error) { List<int> errorlist = new List<int>(); EncoderParameters encoderParams = new EncoderParameters(1); ImageCodecInfo tiffCodecInfo = ImageCodecInfo.GetImageEncoders() .First(ie => ie.MimeType == "image/tiff"); string[] tiffPaths = null; if (isMultipage) { tiffPaths = new string[1]; Image tiffImg = null; try { for (int i = 0; i < base64str.Length; i++) { if (i == 0) { tiffPaths[i] = String.Format("{0}\\{1}.tif", path,fileNames[i]); // Initialize the first frame of multipage tiff. using (Bitmap mybmp = Base64StringToImage(base64str[i])) { //克隆Bitmap对象 解决GUI+ 的一般性错误 tiffImg = new Bitmap(mybmp); } encoderParams.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.MultiFrame); tiffImg.Save(tiffPaths[i], tiffCodecInfo, encoderParams); } else { // Add additional frames. encoderParams.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage); using (Image frame = Base64StringToImage(base64str[i])) { if (frame == null) { errorlist.Add(i); continue; } //不这样做会发生GUI+一般性错误 using (Bitmap img = new Bitmap(frame)) { tiffImg.SaveAdd(img, encoderParams); } } } if (i == base64str.Length - 1) { // When it is the last frame, flush the resources and closing. encoderParams.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.Flush); tiffImg.SaveAdd(encoderParams); } } } finally { if (tiffImg != null) { tiffImg.Dispose(); tiffImg = null; } } } else { tiffPaths = new string[base64str.Length]; for (int i = 0; i < base64str.Length; i++) { tiffPaths[i] = String.Format("{0}\\{1}.tif", path,fileNames[i]); // Save as individual tiff files. using (Image tiffImg = Base64StringToImage(base64str[i])) { tiffImg.Save(tiffPaths[i], ImageFormat.Tiff); } } } error = errorlist; return tiffPaths; } /// <summary> /// base64字符串转图片 /// </summary> /// <param name="txtStr">base64格式的图片字符串</param> /// <returns>图片</returns> private static Bitmap Base64StringToImage(string txtStr) { try { byte[] arr = Convert.FromBase64String(txtStr); using (MemoryStream ms = new MemoryStream(arr)) { Bitmap bmp = new Bitmap(ms); return bmp; } } catch (Exception ex) { return null; } }
用图片的base64字符串 合成tiff
最新推荐文章于 2024-05-28 10:04:48 发布