A. VB制作的多张图片屏保程序如何将固定文件夹下的图片个数设定成变量而不是固定图片个数
启动程序后就对该文件夹下面的图片文件个数进行统计,把统计结果放到一个全局变量里面,把11换成那个全局变量名就行
B. 在html中插入图片时,如何把图片名设置为变量 比如<img src="k.jpg">,其中k是变量。
定义个k变量 然后 <img src=k+".jpg">这个就可以了啊
C. C#海康SDK如何采集彩色图像转Halcon变量
C#之调用海康工业相机SDK采集图像并在Halcon窗口中显示
最近做项目需要对海康相机进行二次开发,现将所学进行整理。
开发环境 VS2012+C#(32位) Halcon12
引用动态链接库
引用Halcon动态链接库(halcondotnet.dll)
引用海康相机动态链接库(MvCameraControl.Net.dll)这个文件在MVS安装目录下MVS\Development\DotNet中,如果你是32位的开发环境就选择win32文件夹下的,如果是64位就选择win64文件夹下的
创建相机类
先在创建的类中编写方法,之后实例化相机类,调用类中的方法。
鼠标右键单击工程项目–添加–类,选择“类”,输入类的名称,例如Hikvision,点击右下角的“添加”。
首先,要引入的命名空间:using HalconDotNet; using MvCamCtrl.NET;
其次,需要用到的全部变量:
private MyCamera m_pMyCamera;
MyCamera.MV_CC_DEVICE_INFO_LIST m_pDeviceList;//设备列表
private MyCamera.MVCC_INTVALUE stParam;//用于接收特定的参数
//为读取、保存图像创建的数组
UInt32 m_nBufSizeForDriver = 3072 * 2048 * 3;
byte[] m_pBufForDriver = new byte[3072 * 2048 * 3];
UInt32 m_nBufSizeForSaveImage = 3072 * 2048 * 3 * 3 + 2048;
byte[] m_pBufForSaveImage = new byte[3072 * 2048 * 3 * 3 + 2048];
//要转成的Halcon图像
HImage image = new HImage();
(1) 查找设备列表
//查找设备
public void DeviceListAcq()
{
int nRet;
// ch:创建设备列表 en:Create Device List
System.GC.Collect();
cbDeviceList.Items.Clear();
nRet = MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref m_pDeviceList);
if (0 != nRet)
{
MessageBox.Show("查找设备失败!");
return;
}
// ch:在窗体列表中显示设备名 | en:Display device name in the form list
for (int i = 0; i < m_pDeviceList.nDeviceNum; i++)
{
MyCamera.MV_CC_DEVICE_INFO device = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_pDeviceList.pDeviceInfo[i], typeof(MyCamera.MV_CC_DEVICE_INFO));
if (device.nTLayerType == MyCamera.MV_GIGE_DEVICE)
{
IntPtr buffer = Marshal.(device.SpecialInfo.stGigEInfo, 0);
MyCamera.MV_GIGE_DEVICE_INFO gigeInfo = (MyCamera.MV_GIGE_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_GIGE_DEVICE_INFO));
if (gigeInfo.chUserDefinedName != "")
{
cbDeviceList.Items.Add("GigE: " + gigeInfo.chUserDefinedName + " (" + gigeInfo.chSerialNumber + ")");
}
else
{
cbDeviceList.Items.Add("GigE: " + gigeInfo.chManufacturerName + " " + gigeInfo.chModelName + " (" + gigeInfo.chSerialNumber + ")");
}
}
else if (device.nTLayerType == MyCamera.MV_USB_DEVICE)
{
IntPtr buffer = Marshal.(device.SpecialInfo.stUsb3VInfo, 0);
MyCamera.MV_USB3_DEVICE_INFO usbInfo = (MyCamera.MV_USB3_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_USB3_DEVICE_INFO));
if (usbInfo.chUserDefinedName != "")
{
cbDeviceList.Items.Add("USB: " + usbInfo.chUserDefinedName + " (" + usbInfo.chSerialNumber + ")");
}
else
{
cbDeviceList.Items.Add("USB: " + usbInfo.chManufacturerName + " " + usbInfo.chModelName + " (" + usbInfo.chSerialNumber + ")");
}
}
}
// ch:选择第一项 | en:Select the first item
if (m_pDeviceList.nDeviceNum != 0)
{
cbDeviceList.SelectedIndex = 0;
}
}
(2) 打开设备
//打开设备
public void OpenDevice()
{
if (m_pDeviceList.nDeviceNum == 0 || cbDeviceList.SelectedIndex == -1)
{
MessageBox.Show("未发现设备,请选择");
return;
}
int nRet = -1;
// ch:获取选择的设备信息 | en:Get selected device information
MyCamera.MV_CC_DEVICE_INFO device =
(MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_pDeviceList.pDeviceInfo[cbDeviceList.SelectedIndex],
typeof(MyCamera.MV_CC_DEVICE_INFO));
// ch:打开设备 | en:Open device
if (null == m_pMyCamera)
{
m_pMyCamera = new MyCamera();
if (null == m_pMyCamera)
{
return;
}
}
nRet = m_pMyCamera.MV_CC_CreateDevice_NET(ref device);
if (MyCamera.MV_OK != nRet)
{
return;
}
nRet = m_pMyCamera.MV_CC_OpenDevice_NET();
if (MyCamera.MV_OK != nRet)
{
m_pMyCamera.MV_CC_DestroyDevice_NET();
MessageBox.Show("设备打开失败");
//ShowErrorMsg("Device open fail!", nRet);
return;
}
// ch:探测网络最佳包大小(只对GigE相机有效) | en:Detection network optimal package size(It only works for the GigE camera)
if (device.nTLayerType == MyCamera.MV_GIGE_DEVICE)
{
int nPacketSize = m_pMyCamera.MV_CC_GetOptimalPacketSize_NET();
if (nPacketSize > 0)
{
nRet = m_pMyCamera.MV_CC_SetIntValue_NET("GevSCPSPacketSize", (uint)nPacketSize);
if (nRet != MyCamera.MV_OK)
{
Console.WriteLine("Warning: Set Packet Size failed {0:x8}", nRet);
}
}
else
{
Console.WriteLine("Warning: Get Packet Size failed {0:x8}", nPacketSize);
}
}
// ch:设置采集连续模式 | en:Set Continues Aquisition Mode
m_pMyCamera.MV_CC_SetEnumValue_NET("AcquisitionMode", 2);// ch:工作在连续模式 | en:Acquisition On Continuous Mode
m_pMyCamera.MV_CC_SetEnumValue_NET("TriggerMode", 0); // ch:连续模式 | en:Continuous
}
(3) 连续采集
//连续采集(也就是实时显示)
public void ContinuesGrab(PictureBox picBox)
{
int nRet;
// ch:开始采集 | en:Start Grabbing
nRet = m_pMyCamera.MV_CC_StartGrabbing_NET();
if (MyCamera.MV_OK != nRet)
{
MessageBox.Show("采集失败!");
//ShowErrorMsg("Trigger Fail!", nRet);
return;
}
//实时采集
m_pMyCamera.MV_CC_SetEnumValue_NET("TriggerMode", 0);
// ch:显示 | en:Display 在PictureBox控件中显示
nRet = m_pMyCamera.MV_CC_Display_NET(picBox.Handle);
if (MyCamera.MV_OK != nRet)
{
MessageBox.Show("显示失败!");
}
}
(4) 停止采集
//停止采集
public void StopGrab()
{
int nRet = -1;
// ch:停止采集 | en:Stop Grabbing
nRet = m_pMyCamera.MV_CC_StopGrabbing_NET();
if (nRet != MyCamera.MV_OK)
{
MessageBox.Show("停止采集失败!");
}
}
(5) 关闭设备
//关闭设备
public void CloseDevice()
{
// ch:关闭设备 | en:Close Device
int nRet;
nRet = m_pMyCamera.MV_CC_CloseDevice_NET();
if (MyCamera.MV_OK != nRet)
{
return;
}
nRet = m_pMyCamera.MV_CC_DestroyDevice_NET();
if (MyCamera.MV_OK != nRet)
{
return;
}
}
(6) 转成Halcon图像
//读取图片转换成Halcon图像
public HImage ReadImage()
{
int nRet;
//MyCamera.MVCC_INTVALUE stParam = new MyCamera.MVCC_INTVALUE();
UInt32 nPayloadSize = 0;
nRet = m_pMyCamera.MV_CC_GetIntValue_NET("PayloadSize", ref stParam);
if (MyCamera.MV_OK != nRet)
{
return null;
}
nPayloadSize = stParam.nCurValue;
if (nPayloadSize > m_nBufSizeForDriver)
{
m_nBufSizeForDriver = nPayloadSize;
m_pBufForDriver = new byte[m_nBufSizeForDriver];
m_nBufSizeForSaveImage = m_nBufSizeForDriver * 3 + 2048;
m_pBufForSaveImage = new byte[m_nBufSizeForSaveImage];
}
IntPtr pData = Marshal.(m_pBufForDriver, 0);
MyCamera.MV_FRAME_OUT_INFO_EX stFrameInfo = new MyCamera.MV_FRAME_OUT_INFO_EX();
nRet = m_pMyCamera.MV_CC_GetOneFrameTimeout_NET(pData, m_nBufSizeForDriver, ref stFrameInfo, 1000);//获取一帧图像,超时时间设置为1000
if (MyCamera.MV_OK != nRet)
{
return null;
}
HImage image = new HImage();
//采集的是黑白图像,利用Halcon图像库中的GenImage1算子来构建图像
image.GenImage1("byte", (int)stFrameInfo.nWidth, (int)stFrameInfo.nHeight, pData);
return image;
}
————————————————
版权声明:本文为CSDN博主“Kevin_Sun777”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Kevin_Sun777/article/details/109210383
D. css背景图片改成ASP变量代码,请高手老手帮忙!
<td style="background-image:url(<%=rs("pic")%>); background-position: center center; background-repeat:no-repeat" valign="top">
E. 怎么把提取到的图片资源保存到变量
那不是很简单,读取这个ico文件,保存在字节集的变量中就好了
用 读入文件(ico文件位置) 读出来就是字节集的
F. EXCEL的图片怎么能够成为变量啊
按ctrl+F3,自定义一个名称a:
=INDEX(Sheet1!$B:$B,MATCH(Sheet1!$E$2,Sheet1!$A:$A,))
在F2插入一个图片框。记得是图片框。。
图片框的公式是
=a
图片框的公式只能是简单引用,不能写成
=INDEX(Sheet1!$B:$B,MATCH(Sheet1!$E$2,Sheet1!$A:$A,))
这样。
就能实现图片是变量了
G. photoshop怎么使用变量功能处理图片
Ps技巧——如何批量更换证件照片和文字信息?https://haokan..com/v?vid
第一步,先做好证件的底,“姓名”,“职务”,“编号”和“照片”都是所谓的变量,是需要批量更换的。
第二步,建一个文本文件,实际上是一个Excel表转存成的txt文件。第一行,把需要更换的变量分成几个项目列出来。就是“姓名”、“职务”、“编号”、“照片”。需要注意的是,间隔的空格用Tab键敲出空格,因为要代替Excel表的格式。照片那一栏,下面显示的是照片所在本文件夹的路径。照片所在的文件夹以及照片的文件名。比如“模特头像模特(1)”。
然后,每个项目下面写上不同的变量内容。做好之后保存就可。
第三步,回到Ps,做一个证件的模板,比如将第一行的姓名内容、职务内容、编号内容,复制粘贴到ps里面,调整颜色和大小。
照片拖进Ps,调整位置大小适合窗口。栅格化背景图层。保存成psd文件。
(记着提前将要输入的照片大小调整成一致的)
第四步,Ps菜单栏点——图像变量定义。在跳出的对话窗口里,勾选“文本替换”。让每一个变量图层和下面我们替换的“文本变量名称”对应。“文本变量的名称”改为每一个项目的名称。比如,图层0001,对应的名称是“编号”。
到了“照片”图层,勾选“像素替换”,像素变量名称改为“照片”,下面的设置默认即可。最后点“确定”,退出小窗口。
第五步。再打开——图像变量定义,在打开的小窗口里面选择“数据组”,在“数据组”小窗口里,“选择文件”将做好的文本文件选择,下面两个选项勾选,点“确定”。
第六步,在“数据组”的对话窗口里,勾选“预览”,检查一一对应的照片和名字是否会改变。
第七步,Ps菜单栏,文件导出数据组作为文件,选择要输出的文件夹,若没有的话就建一新的,小窗口里其他设置选为默认。点“确定”,PS开始运算,生成批量文件。
第八步,检查文件夹,看到生成的批量的psd文件已经存在了。下一步把这一批psd文件改成JPG文件。
第九步,回到Ps,菜单栏——文件脚本图像处理器。跳出小窗口,选择文件夹将生成那个psd文件夹选择,选择“在相同的位置存储”,其他的选默认就可以,点“运行”。
第十步,检查,完成。运用这种方法可以做若干张批量更换的图片,大大提高你的工作效率。
H. vb 图片转换成二进制
dim a()
open XX for binay as #1 '这里的XX指的是图片的路径。
redim a(lof(1))
get #1,,a
close #1
'这样,BMP图片就被转换成二进制的储存在A这个数组变量中了。
I. js中插入图片时如何让图片名设为一个变量
<img src="./image/"+$row+".jpg">别把变量放在引号里,否则它就把变量当成字符串了
J. 怎么样从matlab中取出图片文件的变量,用于VC中。
使用jpg或者png图片,则需要用到symbian提供的那个Multimedia ICL库里的类了。其中比较重的是CImageDecoder类,提供了对图像进行解码的功能。
来看看如何使用它的吧。先定义两个字串:
_LIT(KJPEGFile,"C:\\Data\\me.jpg");
_LIT(KJPEGType,"image/jpeg");
使用的代码比较简单,如下所示:
iDec = CImageDecoder::FileNewL(iRFs,KJPEGFile);
iParent->iBkImageMask=new (ELeave) CFbsBitmap();
iParent->iBkImageMask->Create( iDec-> FrameInfo().iOverallSizeInPixels,iDec-> FrameInfo().iFrameDisplayMode );
iDec->Convert( &iStatus, *(iParent->iBkImageMask) );
其中的iDec是CImageDecoder的实例,而iRFs是RFs的实例。而iParent->iBkImageMask则是一个CFbsBitmap对象实例。
也就是说,我们先利用CImageDecorder::FileNewL来打开一个图像文件(它会自已判断图像类型,我们也可以提供给它我们指定的图像类型)。然后这个图像的信息就保存在iDec->FrameInfo()中了,利用这个信息可以创建一个CFbsBitmap实例(因为symbian中所有显示的图像都是这种类型)。最后,调用CImageDecorder的异步函数Convert就可以将图像(jpeg 或者png格式的)转换成CFbsBitmap位图了。唯一的麻烦是Convert是一个异步函数,第一个参数是TRequestStatus类型(可以是一个活动对象的iStatus成员)。
除了CImageDecorder::FileNewL以外还有一个CImageDecorder:;DataNewL也可以用来从一个缓冲区的字节内容构造出图像数据,只是它第二个参数是TDesC8&类型的aSourceData。
[补充]
别忘了包括头文件 ImageConversion.h,还有引入库imageconversion.lib。