zoukankan      html  css  js  c++  java
  • 图片转成二进制并且压缩字符串

    今天工作需要写了一个把图片转成字符串,并且压缩的小功能,其中用到了多线程去转换字符串,感觉写的还是不错的,拿出来分享一下

     1  /// <summary>
     2         /// 创建多核任务
     3         /// </summary>
     4         /// <param name="bytimages"></param>
     5         /// <param name="count">创建几个核</param>
     6         public string[] MoreTask(byte[] bytImages,int count)
     7         {
     8             string[] temps=new string[count];
     9             Task[] tasks = new Task[count];
    10             int length = bytImages.Length;
    11             for (int i = 0; i < count; i++)
    12             {
    13                 int a = i;
    14                 tasks[a] = Task.Factory.StartNew(() => dosomething(out temps[a], (length / count) * a, (length / count) * (a + 1), bytImages));
    15               //  tasks[i] = Task.Factory.StartNew(() => dosomething(out temps[i], (length / count) * i, (length / count) * (i + 1), bytImages));
    16             }
    17             Task.WaitAll(tasks);
    18           
    19             return temps;
    20         }

    主要就是利用这个方法开启任意多个线程去处理转换任务。

    然后分享一下字符串压缩的方法

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.IO;
    using System.IO.Compression;
    using System.Linq;
    using System.Text;
    using System.Web;
    
    namespace testImage
    {
        public class ZipHelper
        {
            public static string Compress(string str)
            {
    
                //因输入的字符串不是Base64所以转换为Base64,因为HTTP如果不传递Base64则会发生http 400错误
    
    
    
                return Convert.ToBase64String(Compress(Convert.FromBase64String(Convert.ToBase64String(Encoding.Default.GetBytes(str)))));
    
            }
    
    
    
            public static string Decompress(string str)
            {
    
                return Encoding.Default.GetString(Decompress(Convert.FromBase64String(str)));
    
            }
    
    
    
            public static byte[] Compress(byte[] bytes)
            {
    
                using (MemoryStream ms = new MemoryStream())
                {
    
                    GZipStream Compress = new GZipStream(ms, CompressionMode.Compress);
    
    
    
                    Compress.Write(bytes, 0, bytes.Length);
    
    
    
                    Compress.Close();
    
    
    
                    return ms.ToArray();
    
    
    
                }
    
            }
    
    
    
            public static byte[] Decompress(Byte[] bytes)
            {
    
                using (MemoryStream tempMs = new MemoryStream())
                {
    
                    using (MemoryStream ms = new MemoryStream(bytes))
                    {
    
                        GZipStream Decompress = new GZipStream(ms, CompressionMode.Decompress);
    
    
    
                        Decompress.CopyTo(tempMs);
    
    
    
                        Decompress.Close();
    
    
    
                        return tempMs.ToArray();
    
                    }
    
                }
    
            }
        }
    }
    

      主要代码就在这里了

  • 相关阅读:
    scrum
    control.begininvoke
    ChangeBrowsePosition Method
    常见linux命令(表格分类)
    Python 之优先级排序
    Python 之分辨双胞胎:copy(浅拷贝)与 deepcopy(深拷贝)
    字符编码学习总结
    Python 多继承方式及顺序
    AttributeError: module 'datetime' has no attribute 'now' ------解决方法之一
    Python 模块定义、导入、优化详解
  • 原文地址:https://www.cnblogs.com/bjjjunjie/p/3927781.html
Copyright © 2011-2022 走看看