博客日历
2024年05月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
29 | 30 | 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 1 | 2 |
存档
2024年03月 04月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
使用内存映射文件来快速保存数据到文件
BOOL SaveNewFile( IN LPCTSTR lpNewFilePath,IN PBYTE lpbData,IN DWORD dwFileSize )
{
HANDLE _w_hFile=INVALID_HANDLE_VALUE;
HANDLE _w_hFileMap=NULL;
PBYTE _w_lpbFile=NULL;
_w_hFile=CreateFile(
lpNewFilePath,//路径
GENERIC_WRITE|GENERIC_READ,//写
0 ,//共享类型0
NULL,//文件的安全特性
Create_ALWAYS,//创建文件,会改写前一个文件
FILE_FLAG_SEQUENTIAL_SCAN,//针对连续访问对文件缓冲进行优化
NULL);//如果不为零,则指定一个文件句柄
if (INVALID_HANDLE_VALUE==_w_hFile)
{
TRACE("CreateFile:GetLastError()=%d\n",GetLastError());
return FALSE;
}
_w_hFileMap = CreateFileMapping(
_w_hFile,
NULL, //安全对象
PAGE_READWRITE,//以读写方式打开映射
0,
dwFileSize,
NULL);//指定文件映射对象的名字
if (NULL==_w_hFileMap)
{
TRACE("CreateFileMapping:GetLastError()=%d\n",GetLastError());
return FALSE;
}
_w_lpbFile = (PBYTE) MapViewOfFile(
_w_hFileMap,
FILE_MAP_WRITE,
0,
0, //映射的大小
0);//零表示允许windows寻找地址
if (NULL==_w_lpbFile)
{
TRACE("MapViewOfFile:GetLastError()=%d\n",GetLastError());
return FALSE;
}
memcpy(_w_lpbFile,lpbData,dwFileSize);
//这个memcpy导致性能骤减为CFile::Write的水平,郁闷
if (!FlushViewOfFile(_w_lpbFile,0))
{
TRACE("FlushViewOfFile:GetLastError()=%d\n",GetLastError());
return FALSE;
}
UnmapViewOfFile(_w_lpbFile);
CloseHandle(_w_hFileMap);
CloseHandle(_w_hFile);
_w_hFile=INVALID_HANDLE_VALUE;
_w_hFileMap=NULL;
_w_lpbFile=NULL;
return TRUE;
}
性能测试:
P42.8双核+1G内存+希捷IDE接口80G硬盘,写入10M数据平均需要220毫秒!
#define SIZE 1024*1024*10
char *s=new char[SIZE];//10M
SaveNewFile("test.bin",(PBYTE)s,SIZE);
分类:Win32/C++ 查看次数:8380 发布时间:2009/4/20 23:36:00
VBScript 编程控制 Photoshop
- '==========================================================================
- ' NAME : VBScript Control Photoshop 9.0 CS2
- ' AUTHOR : 淡月清风 QQ:259177377 E-Mail:dgx_lsyd3@163.com
- ' DATE : 2007年4月20日23:22:43
- ' COMMENT : 几个函数已经写出来,直接调用即可
- ' VERSION : 1.0
- '==========================================================================
- Const psPixels=1 '设置Photoshop的单位是像素
- Set fso=CreateObject("Scripting.FileSystemObject")
- Set PhotoshopApp=CreateObject("Photoshop.Application")
- InitPhotoshop PhotoshopApp
- ResizeImage PhotoshopApp,GetAppDirectory()+"现在的.jpg",1200,1600,96
- ExitPhotoshop PhotoshopApp
- '//初始化Photoshop
- Sub InitPhotoshop(oPhotoshop)
- oPhotoshop.Preferences.RulerUnits=psPixels '设置默认单位为像素
- Do While oPhotoshop.Documents.Count '关闭所有已打开的文档
- oPhotoshop.ActiveDocument.Close
- Loop
- End Sub
- '//修改图片大小
- Sub ResizeImage(oPhotoshop,ImageFilePath,nWidth,nHeight,nResolution)
- If fso.FileExists(ImageFilePath) Then
- oPhotoshop.Open(ImageFilePath) '打开图片
- Set oDocument=oPhotoshop.Documents.Item(1)
- oDocument.ResizeImage nWidth,nHeight,nResolution,3
- '参数依次为:宽,高,分辨率(比如96像素/英寸),采样类型
- oDocument.Save
- oDocument.Close
- End If
- End Sub
- '//退出Photoshop
- Sub ExitPhotoshop(oPhotoshop)
- PhotoshopApp.Quit
- End Sub
- '//取得当前脚本文件所在的目录
- Function GetAppDirectory()
- GetAppDirectory=Replace(WScript.ScriptFullName,WScript.ScriptName,"")
- End Function
仅当做是抛砖引玉,呵呵
具体可参考Photoshop 官方的参考手册:http://www.adobe.com/devnet/photoshop/scripting/
《VisualBasicReferenceGuide.pdf》
《PhotoshopScriptingGuide.pdf》
《JavaScriptReferenceGuide.pdf》
分类:脚本编程 查看次数:8922 发布时间:2009/4/20 23:28:10