C产品在市场上有哪些独特优势?

2026-04-29 06:352阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计677个文字,预计阅读时间需要3分钟。

C产品在市场上有哪些独特优势?

java/** * 使用byte数组数据生成256色灰度BMP位图 * * @param originalImageData 原始图像数据 * @param originalWidth 原始图像宽度 * @param originalHeight 原始图像高度 * @return 生成的BMP位图 */public static Bitmap CreateBitmap(byte[] originalImageData, int originalWidth, int originalHeight) { // 创建一个与原始图像大小相同的位图 Bitmap bitmap=Bitmap.createBitmap(originalWidth, originalHeight, Bitmap.Config.ARGB_8888);

// 获取位图的像素数组 int[] pixels=new int[originalWidth * originalHeight];

C产品在市场上有哪些独特优势?

// 将原始图像数据转换为灰度值 for (int i=0; i

// 将灰度值数组设置到位图上 bitmap.setPixels(pixels, 0, originalWidth, 0, 0, originalWidth, originalHeight);

return bitmap;}

///<summary>///使用byte[]数据,生成256色灰度 BMP位图///</summary>///<paramname="originalImageData"></param>///<paramname="originalWidth"></param>///<paramname="originalHeight"></param>///<returns></returns>publicstaticBitmapCreateBitmap(byte[]originalImageData,intoriginalWidth,intoriginalHeight){//指定8位格式,即256色BitmapresultBitmap=newBitmap(originalWidth,originalHeight,System.Drawing.Imaging.PixelFormat.Format8bppIndexed);//将该位图存入内存中MemoryStreamcurImageStream=newMemoryStream();resultBitmap.Save(curImageStream,System.Drawing.Imaging.ImageFormat.Bmp);curImageStream.Flush();//由于位图数据需要DWORD对齐(4byte倍数),计算需要补位的个数intcurPadNum=((originalWidth*8+31)/32*4)-originalWidth;//最终生成的位图数据大小intbitmapDataSize=((originalWidth*8+31)/32*4)*originalHeight;//数据部分相对文件开始偏移,具体可以参考位图文件格式intdataOffset=ReadData(curImageStream,10,4);//改变调色板,因为默认的调色板是32位彩色的,需要修改为256色的调色板intpaletteStart=54;intpaletteEnd=dataOffset;intcolor=0;for(inti=paletteStart;i<paletteEnd;i+=4){byte[]tempColor=newbyte[4];tempColor[0]=(byte)color;tempColor[1]=(byte)color;tempColor[2]=(byte)color;tempColor[3]=(byte)0;color++;curImageStream.Position=i;curImageStream.Write(tempColor,0,4);}//最终生成的位图数据,以及大小,高度没有变,宽度需要调整byte[]destImageData=newbyte[bitmapDataSize];intdestWidth=originalWidth+curPadNum;//生成最终的位图数据,注意的是,位图数据从左到右,从下到上,所以需要颠倒for(intoriginalRowIndex=originalHeight-1;originalRowIndex>=0;originalRowIndex--){intdestRowIndex=originalHeight-originalRowIndex-1;for(intdataIndex=0;dataIndex<originalWidth;dataIndex++){//同时还要注意,新的位图数据的宽度已经变化destWidth,否则会产生错位destImageData[destRowIndex*destWidth+dataIndex]=originalImageData[originalRowIndex*originalWidth+dataIndex];}}//将流的Position移到数据段curImageStream.Position=dataOffset;//将新位图数据写入内存中curImageStream.Write(destImageData,0,bitmapDataSize);curImageStream.Flush();//将内存中的位图写入Bitmap对象resultBitmap=newBitmap(curImageStream);returnresultBitmap;}///<summary>///从内存流中指定位置,读取数据///</summary>///<paramname="curStream"></param>///<paramname="startPosition"></param>///<paramname="length"></param>///<returns></returns>publicstaticintReadData(MemoryStreamcurStream,intstartPosition,intlength){intresult=-1;byte[]tempData=newbyte[length];curStream.Position=startPosition;curStream.Read(tempData,0,length);result=BitConverter.ToInt32(tempData,0);returnresult;}///<summary>///向内存流中指定位置,写入数据///</summary>///<paramname="curStream"></param>///<paramname="startPosition"></param>///<paramname="length"></param>///<paramname="value"></param>publicstaticvoidWriteData(MemoryStreamcurStream,intstartPosition,intlength,intvalue){curStream.Position=startPosition;curStream.Write(BitConverter.GetBytes(value),0,length);}

本文共计677个文字,预计阅读时间需要3分钟。

C产品在市场上有哪些独特优势?

java/** * 使用byte数组数据生成256色灰度BMP位图 * * @param originalImageData 原始图像数据 * @param originalWidth 原始图像宽度 * @param originalHeight 原始图像高度 * @return 生成的BMP位图 */public static Bitmap CreateBitmap(byte[] originalImageData, int originalWidth, int originalHeight) { // 创建一个与原始图像大小相同的位图 Bitmap bitmap=Bitmap.createBitmap(originalWidth, originalHeight, Bitmap.Config.ARGB_8888);

// 获取位图的像素数组 int[] pixels=new int[originalWidth * originalHeight];

C产品在市场上有哪些独特优势?

// 将原始图像数据转换为灰度值 for (int i=0; i

// 将灰度值数组设置到位图上 bitmap.setPixels(pixels, 0, originalWidth, 0, 0, originalWidth, originalHeight);

return bitmap;}

///<summary>///使用byte[]数据,生成256色灰度 BMP位图///</summary>///<paramname="originalImageData"></param>///<paramname="originalWidth"></param>///<paramname="originalHeight"></param>///<returns></returns>publicstaticBitmapCreateBitmap(byte[]originalImageData,intoriginalWidth,intoriginalHeight){//指定8位格式,即256色BitmapresultBitmap=newBitmap(originalWidth,originalHeight,System.Drawing.Imaging.PixelFormat.Format8bppIndexed);//将该位图存入内存中MemoryStreamcurImageStream=newMemoryStream();resultBitmap.Save(curImageStream,System.Drawing.Imaging.ImageFormat.Bmp);curImageStream.Flush();//由于位图数据需要DWORD对齐(4byte倍数),计算需要补位的个数intcurPadNum=((originalWidth*8+31)/32*4)-originalWidth;//最终生成的位图数据大小intbitmapDataSize=((originalWidth*8+31)/32*4)*originalHeight;//数据部分相对文件开始偏移,具体可以参考位图文件格式intdataOffset=ReadData(curImageStream,10,4);//改变调色板,因为默认的调色板是32位彩色的,需要修改为256色的调色板intpaletteStart=54;intpaletteEnd=dataOffset;intcolor=0;for(inti=paletteStart;i<paletteEnd;i+=4){byte[]tempColor=newbyte[4];tempColor[0]=(byte)color;tempColor[1]=(byte)color;tempColor[2]=(byte)color;tempColor[3]=(byte)0;color++;curImageStream.Position=i;curImageStream.Write(tempColor,0,4);}//最终生成的位图数据,以及大小,高度没有变,宽度需要调整byte[]destImageData=newbyte[bitmapDataSize];intdestWidth=originalWidth+curPadNum;//生成最终的位图数据,注意的是,位图数据从左到右,从下到上,所以需要颠倒for(intoriginalRowIndex=originalHeight-1;originalRowIndex>=0;originalRowIndex--){intdestRowIndex=originalHeight-originalRowIndex-1;for(intdataIndex=0;dataIndex<originalWidth;dataIndex++){//同时还要注意,新的位图数据的宽度已经变化destWidth,否则会产生错位destImageData[destRowIndex*destWidth+dataIndex]=originalImageData[originalRowIndex*originalWidth+dataIndex];}}//将流的Position移到数据段curImageStream.Position=dataOffset;//将新位图数据写入内存中curImageStream.Write(destImageData,0,bitmapDataSize);curImageStream.Flush();//将内存中的位图写入Bitmap对象resultBitmap=newBitmap(curImageStream);returnresultBitmap;}///<summary>///从内存流中指定位置,读取数据///</summary>///<paramname="curStream"></param>///<paramname="startPosition"></param>///<paramname="length"></param>///<returns></returns>publicstaticintReadData(MemoryStreamcurStream,intstartPosition,intlength){intresult=-1;byte[]tempData=newbyte[length];curStream.Position=startPosition;curStream.Read(tempData,0,length);result=BitConverter.ToInt32(tempData,0);returnresult;}///<summary>///向内存流中指定位置,写入数据///</summary>///<paramname="curStream"></param>///<paramname="startPosition"></param>///<paramname="length"></param>///<paramname="value"></param>publicstaticvoidWriteData(MemoryStreamcurStream,intstartPosition,intlength,intvalue){curStream.Position=startPosition;curStream.Write(BitConverter.GetBytes(value),0,length);}