C#根據屏幕分辨率改變圖片尺寸


最近工作中遇到一個問題,就是需要將程序文件夾中的圖片根據此時電腦屏幕的分辨率來重新改變圖片尺寸

以下為代碼實現過程:

1、獲取文件夾中的圖片,此文件夾名為exe程序同目錄下

//讀取文件夾中文件
DirectoryInfo dir = new DirectoryInfo(@"文件夾名");
FileInfo[] fileInfo = dir.GetFiles();
 List<string> fileNames = new List<string>();
foreach (FileInfo item in fileInfo)
{
    fileNames.Add(item.Name);
}

2、獲取電腦屏幕分辯率

//獲取全屏下屏幕分辯率
Rectangle rect = new Rectangle();
//全屏
rect.Width = (int)System.Windows.SystemParameters.PrimaryScreenWidth;
rect.Height = (int)System.Windows.SystemParameters.PrimaryScreenHeight;
//rect = Screen.GetWorkingArea(this);//工作區域下的分辯率,不包括任務欄
//rect.Width;//屏幕寬
//rect.Height;//屏幕高 

3、改變圖片尺寸,並保存

/// <summary>
/// 生成縮略圖
/// </summary>
/// <param name="serverImagePath">圖片地址</param>
/// <param name="thumbnailImagePath">縮略圖地址</param>
/// <param name="width">圖片寬度</param>
/// <param name="height">圖片高度</param>
/// <param name="p"></param>
public static void GetThumbnail(string serverImagePath, string thumbnailImagePath, int width, int height)
{
    System.Drawing.Image serverImage = System.Drawing.Image.FromFile(serverImagePath);
    //畫板大小
    int towidth = width;
    int toheight = height;
    //縮略圖矩形框的像素點
    int ow = serverImage.Width;
    int oh = serverImage.Height;

    if (ow > oh)
    {
        toheight = serverImage.Height * width / serverImage.Width;
    }
    else
    {
        towidth = serverImage.Width * height / serverImage.Height;
    }
    //新建一個bmp圖片
    System.Drawing.Image bm = new System.Drawing.Bitmap(width, height);
    //新建一個畫板
    System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm);
    //設置高質量插值法
    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    //設置高質量,低速度呈現平滑程度
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    //清空畫布並以透明背景色填充
    g.Clear(System.Drawing.Color.White);
    //在指定位置並且按指定大小繪制原圖片的指定部分
    g.DrawImage(serverImage, new System.Drawing.Rectangle((width - towidth) / 2, (height - toheight) / 2, towidth, toheight),
        0, 0, ow, oh,
        System.Drawing.GraphicsUnit.Pixel);
    try
    {
        //以jpg格式保存縮略圖
        bm.Save(thumbnailImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
    }
    catch (System.Exception e)
    {
        throw e;
    }
    finally
    {
        serverImage.Dispose();
        bm.Dispose();
        g.Dispose();
    }
}

自此整個功能就實現了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM