我有这个代码:
int ISampleGrabberCB.BufferCB(double sampleTime, IntPtr pBuffer, int bufferLen)
{
if (Form1.ExtractAutomatic == true)
{
using (var bitmap = new Bitmap(_width, _height, _width * 3, PixelFormat.Format24bppRgb, pBuffer))
{
if (!this.Secondpass)
{
long[] HistogramValues = Form1.GetHistogram(bitmap);
Form1.Histograms.Add(HistogramValues);
long t = Form1.GetTopLumAmount(HistogramValues, 1000);
Form1.averagesTest.Add(t);
}
else
{
if (_frameId > 0)
{
double t = Form1.averagesTest[_frameId] / 1000.0 - Form1.averagesTest[_frameId - 1] / 1000.0;
w.WriteLine("averagesTest >>> " + t);
if (_frameId == 1049)
{
w.Close();
}
if (Form1.averagesTest[_frameId] / 1000.0 - Form1.averagesTest[_frameId - 1] / 1000.0 > 60.0) {
count = 6;
}
if (count > 0)
{
bitmap.RotateFlip(RotateFlipType.Rotate180FlipX);
bitmap.Save(Path.Combine(_outFolder, _frameId.ToString("D6") + ".jpg"),ImageFormat.Jpeg);
count --;
}
在此之前我将位图保存为位图 .bmp 现在我将其更改为 Jpeg .jpg 但无论如何可以将 jpg 更改为以较低的分辨率保存?也许以某种方式手动更改?
bitmap.Save(Path.Combine(_outFolder, _frameId.ToString("D6") + ".jpg"),ImageFormat.Jpeg);
而是将其保存为 jpeg 可能会将其保存为 jpeg 但分辨率要低得多。原因是我想显示每个位图直方图,并同时在图片框中显示它自己的图像/帧,但是如果我能够以较低的分辨率保存它,那么保存过程会更快。
因为我想检查直方图,所以我不介意在这种情况下图像/帧是否会以低分辨率显示。