[C#노트] byte 회전비트맵
1814 단어 c#
public Bitmap Byte2Bitmap(byte[] rawValues, int width, int height)
{
// ,
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format8bppIndexed);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height),
ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
//
int stride = bmpData.Stride; //
int offset = stride - width; //
IntPtr iptr = bmpData.Scan0; // bmpData
int scanBytes = stride * height; // stride ,
//
int posScan = 0, posReal = 0; // ,
byte[] pixelValues = new byte[scanBytes]; ; //
for (int x = 0; x < height; x++)
{
//
for (int y = 0; y < width; y++)
{
pixelValues[posScan++] = rawValues[posReal++];
}
posScan += offset; // , “ ”
}
// Marshal Copy , BitmapData
System.Runtime.InteropServices.Marshal.Copy(pixelValues, 0, iptr, scanBytes);
bmp.UnlockBits(bmpData); //
// ,
ColorPalette temPalette;
using (Bitmap tempBmp = new Bitmap(1, 1, PixelFormat.Format8bppIndexed))
{
temPalette = tempBmp.Palette;
}
for (int i = 0; i < 256; i++)
{
temPalette.Entries[i] = Color.FromArgb(i, i, i);
}
bmp.Palette = temPalette;
return bmp;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.