截图(全屏):
private void tsbScreenshot_Click(object sender, EventArgs e)
{
try
{
Graphics g = Graphics.FromImage(myImage);
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height));
IntPtr dc1 = g.GetHdc();
g.ReleaseHdc(dc1);
string FileName = Application.StartupPath + "\\Records\\" + DateTime.Now.ToString("yyyyMMdd_hhmmss") + ".jpg";
myImage.Save(FileName);
g.Dispose();
if (CompressImage(FileName, FileName, 50) == true)
{
File.Delete(FileName);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
压缩:
public static bool CompressImage(string InputFileAddress, string OutputFileAddress, int CompressionRate)
{
System.Drawing.Image iSource = System.Drawing.Image.FromFile(InputFileAddress);
ImageFormat tFormat = iSource.RawFormat;
//以下代码为保存图片时,设置压缩质量
EncoderParameters ep = new EncoderParameters();
long[] qy = new long[1];
qy[0] = CompressionRate;//设置压缩的比例1-100
EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);
ep.Param[0] = eParam;
try
{
ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo jpegICIinfo = null;
for (int x = 0; x < arrayICI.Length; x++)
{
if (arrayICI[x].FormatDescription.Equals("JPEG"))
{
jpegICIinfo =arrayICI[x];
break;
}
}
if (jpegICIinfo != null)
{
iSource.Save(OutputFileAddress, jpegICIinfo, ep);//dFile是压缩后的新路径
}
else
{
iSource.Save(OutputFileAddress, tFormat);
}
return true;
}
catch
{
return false;
}
finally
{
iSource.Dispose();
}
}