如何将字节数组图像添加到ziparchive?

时间:2016-06-28 07:08:02

标签: c#

我的情况:我有一堆字节数组形式的Jpeg图像。我有一个这些对象的列表:

public class MyImage
{
    public byte[] ImageData { get; set; }
}

我想要的情况:我想在内存中创建一个zip文件并将其放在一个变量中。我在REST服务中创建这些zip文件。理想情况下,我会将此ziparchive转换为字节数组,以便我可以将其发送到用其他语言编写的系统。

我有创建ziparchive的代码,并将我的图像字节数组添加到它。但是如何将ziparchive本身转换为字节数组呢?

var images = new List<MyImage>();

//add data to images 

using (var ms = new MemoryStream())
{
    using (var zipArchive = new ZipArchive(ms, ZipArchiveMode.Create, true))
    {
        var i = 1;
        foreach (var image in images)
        {
            var entry = zipArchive.CreateEntry("image" + i + ".jpg", CompressionLevel.Fastest);
            using (var entryStream = entry.Open())
            {
                entryStream.Write(image.ImageData, 0, photo.ImageOriginal.Length);
            }
            i++;
        }

        //var zipBytes = magic method for turning my archive into a zipfile
    }
}

我的问题:我如何让这个工作? 奖金问题:是否将ziparchive变成了与其他语言兼容的字节数组?

1 个答案:

答案 0 :(得分:3)

您的ZipArchive映射到MemoryStream(变量ms)。您可以使用MemoryStream.ToArray()将MemoryStream的内容作为字节数组获取。