私はこのコードを持っています:
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 --;
}
その前にビットマップをBitmap.bmpとして保存しましたが、今はJpeg .jpgに変更しましたが、jpgを低解像度で保存するように変更する方法はありますか?多分手動変更はどういうわけか?
bitmap.Save(Path.Combine(_outFolder, _frameId.ToString("D6") + ".jpg"),ImageFormat.Jpeg);
代わりに、それをjpegとして保存するのは、おそらくjpegとして保存するためですが、解像度ははるかに低くなります。その理由は、各ビットマップヒストグラムを表示し、同時に画像/フレームをpictureBoxに表示したいのですが、低解像度で保存できる場合は、保存プロセスが高速になります。
ヒストグラムを確認したいので、この場合、画像/フレームが低解像度で表示されるかどうかは気になりません。