簡體   English   中英

從字節數組C#創建jpeg的最快方法

[英]fastest way to create a jpeg from byte array c#

我在陣列中有一個圖像,並且以這種方式保存它:

ImageConverter ic = new ImageConverter();
Image img = (Image)ic.ConvertFrom(Jpeg);
Bitmap bitmap1 = new Bitmap(img);
string saveString = "c:\\M_files\\new_pics\\" + pictureCounter + ".jpg";
bitmap1.Save(saveString, System.Drawing.Imaging.ImageFormat.Jpeg);

它可以工作,但是我需要它更快,因為它需要來自流式攝像機的圖像。 有沒有更快的方法? 我的數組以字節為單位,然后使用容器將其轉換為位圖,然后另存為jpeg

嘗試使用此代碼,它可以快速有效地工作,在這段代碼中,您可以將圖片轉換為JPEG來指定寬度和高度,並可以傳遞任意數量的圖像。 您可以將其修改為自己的需求。

public void CreateThumbnail(string[] b, double wid, double hght, bool Isprint)
{
    string[] path;
    path = new string [64];
    path = b;
    string saveath = "i:\\check\\a test\\";
    for (int i = 0; i < b.Length; i++)
    {
        DirectoryInfo dir = new DirectoryInfo(path[i]);
        string dir1 = dir.ToString();
        dir1 = dir1.Substring(dir1.LastIndexOf("\\"));

    FileInfo[] files1 = dir.GetFiles();

    foreach (FileInfo f in files1)
    {
        string gh = f.ToString();
        try
        {
            System.Drawing.Image myThumbnail150;
            System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
            System.Drawing.Image imagesize = System.Drawing.Image.FromFile(f.FullName);
            Bitmap bitmapNew = new Bitmap(imagesize);
            double maxWidth = wid;
            double maxHeight = hght;
            int w = imagesize.Width;
            int h = imagesize.Height;
            // Longest and shortest dimension 
            int longestDimension = (w > h) ? w : h;
            int shortestDimension = (w < h) ? w : h;
            // propotionality  
            float factor = ((float)longestDimension) / shortestDimension;
            // default width is greater than height    
            double newWidth = maxWidth;
            double newHeight = maxWidth / factor;
            // if height greater than width recalculate  
            if (w < h)
            {
                newWidth = maxHeight / factor;
                newHeight = maxHeight;
            }
            myThumbnail150 = bitmapNew.GetThumbnailImage((int)newWidth, (int)newHeight, myCallback, IntPtr.Zero);

            string ext = Path.GetExtension(f.Name);

            if (!Directory.Exists(saveath + dir1))
            {
                Directory.CreateDirectory(saveath + dir1);
                myThumbnail150.Save(saveath + dir1 + "\\" + f.Name.Replace(ext, ".Jpeg"), System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            else if(Directory.Exists(saveath+dir1))
            {
                myThumbnail150.Save(saveath + dir1+" \\"+ f.Name.Replace(ext, ".Jpeg"), System.Drawing.Imaging.ImageFormat.Jpeg);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("something went wrong" + ex.ToString());
        }
    }
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM