/// <summary>
///
/// </summary>
/// <param name="groupid"></param>
/// <param name="width"></param>
/// <param name="height"></param>
private void ShowActionStatusChart(int groupId, int width, int height)
{
try {
//width = 291;
height = 196;
DataTable statusData = _service.GetActionStatusReportData(groupId);
byte[] buffer = GenerateReportViewerBuffer(
HttpContext.Current.Server.MapPath(
"~/RDLC/Report_ActionStatus.rdlc"), "ReportDataSet_ActionStatus", statusData);
using (MemoryStream ms = GenerateImageMemoryStream2(buffer, width, height)) {
View.ShowReportImage(ms);
}
}
catch {
throw;
}
}
<img src="../Report/ISMS_Report_CreateReportImage.aspx?Model=RiskProfileDef&Groupid= <%= this.GroupId %>
public void ShowReportImage(MemoryStream ms)
{
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());//ISMS_Report_CreateReportImage.aspx
}
private byte[] GenerateReportViewerBuffer(string rdlcPatch, string tableName, DataTable dt)
{
ReportViewer rv = new ReportViewer();
rv.ProcessingMode = ProcessingMode.Local;
rv.LocalReport.ReportPath = rdlcPatch;
rv.LocalReport.DataSources.Clear();
rv.LocalReport.DataSources.Add(new ReportDataSource(tableName, dt));
rv.LocalReport.Refresh();
string format = "Image";
string encoding;
string mimeType;
string extension;
Warning[] warnings = null;
string[] streamIDs = null;
byte[] buffer = rv.LocalReport.Render(format, null, out mimeType, out encoding, out extension, out streamIDs, out warnings);
return buffer;
}
///<summary>
///Same as GenerateImageMemoryStream, But different cutHeight,width
/// </summary>
/// <param name="buffer"></param>
/// <param name="imgWidth"></param>
/// <param name="imgHiegth"></param>
/// <param name="offsetWidth"></param>
/// <param name="offsetHeight"></param>
/// <returns></returns>
private MemoryStream GenerateImageMemoryStreamForRisk(byte[] buffer, int imgWidth, int imgHiegth, int offsetWidth, int offsetHeight)
{
int cutHiegth = 200;
int cutWidth = 300;
System.Drawing.Image imageReport = null;
System.Drawing.Bitmap bmPhoto = null;
System.Drawing.Graphics gbmPhoto = null;
MemoryStream msReport = null;
MemoryStream msResult = null;
try
{
msReport = new MemoryStream(buffer);
imageReport = System.Drawing.Image.FromStream(msReport);
bmPhoto = new System.Drawing.Bitmap(imgWidth, imgHiegth);
gbmPhoto = System.Drawing.Graphics.FromImage(bmPhoto);
gbmPhoto.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
gbmPhoto.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
gbmPhoto.Clear(System.Drawing.Color.Transparent);
gbmPhoto.DrawImage(imageReport, new System.Drawing.Rectangle(0, 0, imgWidth, imgHiegth), new System.Drawing.Rectangle(offsetWidth, offsetHeight, cutWidth, cutHiegth), System.Drawing.GraphicsUnit.Pixel);
msResult = new MemoryStream();
bmPhoto.Save(msResult, System.Drawing.Imaging.ImageFormat.Jpeg);
}
finally
{
imageReport.Dispose();
bmPhoto.Dispose();
gbmPhoto.Dispose();
msReport.Dispose();
}
return msResult;
}