图片转成二进制并且压缩字符串

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

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

                }

            }

        }
    }
}

  主要代码就在这里了

posted @ 2014-08-21 17:52  晨冬之雪  阅读(1542)  评论(0编辑  收藏  举报
百度