| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1505 人关注过本帖, 1 人收藏
标题:GdipSaveImageToFile使用求解,希望能将剪贴板的内容另存为图片D:\test.jpg
只看楼主 加入收藏
shschy
Rank: 2
等 级:论坛游民
帖 子:87
专家分:20
注 册:2022-3-13
结帖率:33.33%
收藏(1)
 问题点数:0 回复次数:4 
GdipSaveImageToFile使用求解,希望能将剪贴板的内容另存为图片D:\test.jpg
GdipSaveImageToFile使用求解,希望能将剪贴板的内容另存为图片D:\test.jpg
搜索更多相关主题的帖子: jpg 另存为 内容 图片 test 
2022-03-27 11:17
shschy
Rank: 2
等 级:论坛游民
帖 子:87
专家分:20
注 册:2022-3-13
收藏(1)
得分:0 
感谢sych的帮助,前面他发了代码,win10+VFP9环境测试成功
DECLARE INTEGER GetClipboardData IN win32api INTEGER
DECLARE INTEGER OpenClipboard IN win32api INTEGER
DECLARE INTEGER CloseClipboard IN win32api
DECLARE LONG IsClipboardFormatAvailable IN user32 LONG
DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject
Declare Long GdiplusShutdown in GdiPlus  Long token
Declare Long GdiplusStartup in GdiPlus  Long @ token, String @ input, Long @ output
DECLARE INTEGER GdipCreateBitmapFromHBITMAP in GdiPlus.dll INTEGER, INTEGER, INTEGER @
DECLARE INTEGER GdipSaveImageToFile in GdiPlus.dll INTEGER,String,String @,String @
DECLARE LONG GdipDisposeImage IN GDIPLUS LONG nImage
IF IsClipboardFormatAvailable(2)=0
    MESSAGEBOX("剪贴板中没有图像",64,"温馨提示")
else
    IF OpenClipboard(0)=0
        MESSAGEBOX("剪贴板打开失败",64,"温馨提示")
    else
        lcOutputFile="D:\test.jpg"
        hBitmap = GetClipboardData(2)  &&CF_BITMAP=2
        hToken=0
        cInput = PADR(CHR(1), 16, CHR(0))
        GdiplusStartup(@hToken, @cInput, 0)
        ubitmap=0
        GdipCreateBitmapFromHBITMAP(hBitmap,2,@ubitmap)
        qEncoderClsID_BMP=0h00F47C55041AD3119A730000F81EF32E
        GdipSaveImageToFile(ubitmap,STRCONV(lcOutputFile+CHR(0),5),qEncoderClsID_BMP,null)
        GdipDisposeImage(ubitmap)
        GdiplusShutdown(m.hToken)
        closehandle(hBitmap)
        CloseClipboard()
    endif
endif
2022-03-27 11:30
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:806
专家分:1231
注 册:2021-10-13
收藏
得分:0 
*!*    VFP 图形文件与剪切板互换的API解决方法

*!*    在 VFP 中,凡遇图形处理,大多数情况下,都会涉及到图形文件与剪切板互换的情况。下面给出利用 API 解决的方法。这是原来从网上摘下来的,版权归原作者。
*!*    基本处理的代码如下,你可以将其应用到你的代码中。

DECLARE INTEGER OpenClipboard               IN User32 INTEGER
DECLARE INTEGER CloseClipboard              IN User32
DECLARE INTEGER EmptyClipboard              IN User32
DECLARE INTEGER SetClipboardData            IN User32 INTEGER,INTEGER
DECLARE INTEGER LoadImage                   IN WIN32API INTEGER,String,INTEGER,INTEGER,INTEGER,INTEGER
DECLARE INTEGER GetClipboardData            IN User32 INTEGER
DECLARE INTEGER GdipCreateBitmapFromHBITMAP IN GdiPlus.dll INTEGER, INTEGER, INTEGER @
DECLARE INTEGER GdipSaveImageToFile         IN GdiPlus.dll INTEGER,String,String @,String @
DECLARE Long    GdipCreateHBITMAPFromBitmap IN GDIPLUS.DLL Long nativeImage, Long @, Long
DECLARE Long    GdipCreateBitmapFromFile    IN GDIPLUS.DLL String FileName, Long @nBitmap
DECLARE Long    CopyImage                   IN WIN32API Long hImage, Long, Long, Long , Long

#Define CF_BITMAP 2
#Define CF_DIB 8
#Define IMAGE_BITMAP 0
#Define LR_LOADFROMFILE 16

*1.将图形文件保存到剪切板
nBitmap=0
hbm=0
imagefile='图形文件名'
GdipCreateBitmapFromFile(STRCONV(imagefile+0h00,5),@nBitmap)
GdipCreateHBITMAPFromBitmap(nBitmap,@hbm,0)
lhBmp = CopyImage(hbm, 0, 0, 0, 0)
IF OpenClipboard(0)!= 0
   EmptyClipboard()
   SetClipboardData(CF_BITMAP, lhBmp)
   CloseClipboard()
ENDIF

*2.将剪切板图形保存到本地
OpenClipboard(0)
hBitmap = GetClipboardData(CF_BITMAP)
hDib = GetClipboardData(CF_DIB)
CloseClipboard()
uBitmap=0
GdipCreateBitmapFromHBITMAP(hBitmap,2,@uBitmap)
lcOutputFile=STRCONV('C:\_Temp1.jpg'+CHR(0),5)
*!* lqEncoderClsID_BMP=0h00F47C55041AD3119A730000F81EF32E &&BMP格式
lqEncoderClsID_JPG=0h01F47C55041AD3119A730000F81EF32E &&JPG格式
*!* lqEncoderClsID_GIF=0h02F47C55041AD3119A730000F81EF32E &&GIF格式
*!* lqEncoderClsID_TIF=0h05F47C55041AD3119A730000F81EF32E &&TIF格式
*!* lqEncoderClsID_PNG=0h06F47C55041AD3119A730000F81EF32E &&PNG格式
GdipSaveImageToFile(uBitmap,lcOutputFile,lqEncoderClsID_JPG,NULL)

赠人玫瑰,手有余香!哈哈
2022-12-12 10:24
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1790
专家分:3409
注 册:2012-2-29
收藏
得分:0 
谢谢!
2022-12-13 05:25
pvm2000
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:180
专家分:312
注 册:2022-12-22
收藏
得分:0 
学习了
2022-12-26 00:19
快速回复:GdipSaveImageToFile使用求解,希望能将剪贴板的内容另存为图片D:\tes ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037985 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved