/// <summary> /// 存储图像 /// </summary> /// <param name="objIBaseData">图像数据对象</param> /// <param name="strFilePath">显示图像文件名</param> public void SaveBmp(IBaseData objIBaseData, string strFilePath) { GX_VALID_BIT_LIST emValidBits = GX_VALID_BIT_LIST.GX_BIT_0_7; //检查图像是否改变并更新Buffer __UpdateBufferSize(objIBaseData); if (null != objIBaseData) { emValidBits = __GetBestValudBit(objIBaseData.GetPixelFormat()); if (m_bIsColor) { IntPtr pBufferColor = objIBaseData.ConvertToRGB24(emValidBits, GX_BAYER_CONVERT_TYPE_LIST.GX_RAW2RGB_NEIGHBOUR, false); Marshal.Copy(pBufferColor, m_byColorBuffer, 0, __GetStride(m_nWidth, m_bIsColor) * m_nHeigh); __UpdateBitmapForSave(m_byColorBuffer); } else { IntPtr pBufferMono = IntPtr.Zero; if (__IsPixelFormat8(objIBaseData.GetPixelFormat())) { pBufferMono = objIBaseData.GetBuffer(); } else { pBufferMono = objIBaseData.ConvertToRaw8(emValidBits); } Marshal.Copy(pBufferMono, m_byMonoBuffer, 0, __GetStride(m_nWidth, m_bIsColor) * m_nHeigh); __UpdateBitmapForSave(m_byMonoBuffer); } m_bitmapForSave.Save(strFilePath, ImageFormat.Bmp); } }
public HObject Show(IBaseData objIBaseData) { GX_VALID_BIT_LIST emValidBits = GX_VALID_BIT_LIST.GX_BIT_0_7; if (null != objIBaseData) { emValidBits = GetBestValudBit(objIBaseData.GetPixelFormat()); if (GX_FRAME_STATUS_LIST.GX_FRAME_STATUS_SUCCESS == objIBaseData.GetStatus()) { IntPtr pBufferMono = IntPtr.Zero; if (IsPixelFormat8(objIBaseData.GetPixelFormat())) { pBufferMono = objIBaseData.GetBuffer(); } else { pBufferMono = objIBaseData.ConvertToRaw8(emValidBits); } Marshal.Copy(pBufferMono, m_byMonoBuffer, 0, nWidth * nHeigh); unsafe { fixed(byte *p = m_byMonoBuffer) { HOperatorSet.GenEmptyObj(out HObject image); image.Dispose(); HOperatorSet.GenImage1(out image, "byte", nWidth, nHeigh, new IntPtr(p)); return(image); } } } } return(null); }
private void UpdateImageData(IBaseData objIBaseData) { try { GX_VALID_BIT_LIST emValidBits = GX_VALID_BIT_LIST.GX_BIT_0_7; if (null != objIBaseData) { emValidBits = DahengHelper.GetBestValidBit(objIBaseData.GetPixelFormat()); if (GX_FRAME_STATUS_LIST.GX_FRAME_STATUS_SUCCESS == objIBaseData.GetStatus()) { if (isColor) { if (currentStreamFormat == DahengStreamFormat.RGB) { IntPtr buffer = objIBaseData.ConvertToRGB24(emValidBits, GX_BAYER_CONVERT_TYPE_LIST.GX_RAW2RGB_NEIGHBOUR, true); FillRGB24(buffer); } else if (currentStreamFormat == DahengStreamFormat.Raw) { IntPtr bufferRaw = objIBaseData.ConvertToRaw8(emValidBits); FillY800(bufferRaw); } } else { IntPtr buffer = objIBaseData.GetBuffer(); FillY800(buffer); //IntPtr pBufferMono = IntPtr.Zero; //if (IsPixelFormat8(objIBaseData.GetPixelFormat())) //{ // pBufferMono = objIBaseData.GetBuffer(); //} //else //{ // pBufferMono = objIBaseData.ConvertToRaw8(emValidBits); //} //Marshal.Copy(pBufferMono, m_byMonoBuffer, 0, width * height); } } } } catch (Exception) { } }
/// <summary> /// 用于显示图像 /// </summary> /// <param name="objIBaseData">图像数据对象</param> public void Show(IBaseData objIBaseData) { GX_VALID_BIT_LIST emValidBits = GX_VALID_BIT_LIST.GX_BIT_0_7; //检查图像是否改变并更新Buffer __UpdateBufferSize(objIBaseData); if (null != objIBaseData) { emValidBits = __GetBestValudBit(objIBaseData.GetPixelFormat()); if (GX_FRAME_STATUS_LIST.GX_FRAME_STATUS_SUCCESS == objIBaseData.GetStatus()) { if (m_bIsColor) { IntPtr pBufferColor = objIBaseData.ConvertToRGB24(emValidBits, GX_BAYER_CONVERT_TYPE_LIST.GX_RAW2RGB_NEIGHBOUR, false); Marshal.Copy(pBufferColor, m_byColorBuffer, 0, __GetStride(m_nWidth, m_bIsColor) * m_nHeigh); __ShowImage(m_byColorBuffer); } else { IntPtr pBufferMono = IntPtr.Zero; if (__IsPixelFormat8(objIBaseData.GetPixelFormat())) { pBufferMono = objIBaseData.GetBuffer(); } else { pBufferMono = objIBaseData.ConvertToRaw8(emValidBits); } Marshal.Copy(pBufferMono, m_byMonoBuffer, 0, __GetStride(m_nWidth, m_bIsColor) * m_nHeigh); __ShowImage(m_byMonoBuffer); } } } }