A gyors átalakulás egy színes kép fekete-fehér c #
Talán számos módszer létezik konvertáló színes kép fekete-fehér, és talán még jobb, de pillanatnyilag eljárás alább látható, a leggyorsabb körében ismert rám.
Conversion (Sajátgép) kép mérete 2,3-2,5 Mb (2560x1920) tart átlagosan 0,3 másodperc. Véleményem szerint, és a saját célra egy jó eredmény.
A módszer nem működik a kép és a munka az adatokat egységet, ha ez nagyon egyszerű - a fagyasztva adatterület egy képet szem előtt tartva - változtassa meg, mi kell, és vissza mindent a normális.
Iterálás byte tömböt 3 végezzük lépésekben, minden pixel van kódolva 3 bájt R G B.
A ciklus alkatrészek R G és B összeadódnak, az átlagos értéke a három komponens, majd ahelyett, hogy az R értékekre G és B helyezzük átlagos értéke ezáltal által adott a kívánt szürke tónusú.
Dolgozni kell csatlakoztatni eljárás:
System.Drawing.Imaging;
System.Runtime.InteropServices;
Egy példa arra, hogyan néz ki a valóságban:

Újszerű a ciklusban
A (int számláló = 0; számláló
Azt javaslom, hogy írd be:
A (int számláló = 0; számláló

Strannenko. Van ez a darab a kódot venni egyenesen egy működő példa. 100% működik.
Uo rgbValues.Length - az a szám, a tömb elemeinek. A visszaszámlálás kezdődik 0. feltétel (mereven kevesebb). Logikája szerint nem lépheti túl.
Itt:

De általában keveset. A jelenleg alkalmazott azonos (hasonló) algoritmus osztja a nagy kép egy mozaik sor kisebb, és így ez nem értendő, hogy miért csak bizonyos szélességében (egyenlő 50) a mozaik kép elem torz elemek.
A hibák nem lesz, ha rgbValues.Length többszöröse 3.
Ellenkező esetben, ha repül túl a tömb.

Ezért megkértük az azonos képpont formátum PixelFormat.Format24bppRgb feltételezi (ha jól értem), hogy áll a 3 bájt. És ez nem azt mondja a szám osztható 3 m. Vagy én vagyok itt valami nem értem, és ez függ a forrás képformátum? Próbáltam a különböző - a hiba nem fagy stb.

És mégis a kódot:
én azonos
Az eredmény.