0

私はこのコードを持っています:

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に表示したいのですが、低解像度で保存できる場合は、保存プロセスが高速になります。

ヒストグラムを確認したいので、この場合、画像/フレームが低解像度で表示されるかどうかは気になりません。

4

1 に答える 1

3

保存された画像ファイルには、解像度はまったく影響しません。これは参照番号であり、画像を作成したデバイスでの画像の大きさ(インチ単位)を示しています。

解像度が大幅に異なるデバイスで画像を表示する場合に重要になります。良い例は、マシンのペイントプログラムで作成した画像です。そして、紙に印刷します。

ペイントプログラムでは、たとえば、1600 x 900ピクセルの画像を作成し、それがラップトップの画面全体、つまり14インチすべてに表示されます。次に、600ドット/インチの解像度でプリンタに印刷すると、同じ画像は1600/600 x 900/600 = 2.7x1.5インチになります。紙の切手になりました。

これを回避するために、画像は再スケーリングされているため、紙の上でも14インチかかります。画像の解像度参照番号により、この再スケーリングが可能になります。ペイントプログラムは、モニターの解像度、たとえば1インチあたり120ドットを記録しました。印刷して、プリンタの解像度が1インチあたり600ドットであることを確認すると、同じサイズの画像を紙に印刷するには、画像を5倍の大きさに印刷する必要があることがわかります。

画像をより速く保存するには、画像を小さくする必要があります。ピクセル単位。Bitmap(Image、Size)コンストラクターは、これを行う簡単な方法です。

于 2012-10-30T13:08:40.267 に答える