VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

如何變更圖片大小

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
kmkna1103



註冊時間: 2008-05-08
文章: 119
來自: 台灣

第 1 樓

發表發表於: 星期四 一月 15, 2015 10:23 am    文章主題: 如何變更圖片大小 引言回覆

在上傳圖片時變更成統一的大小,如何實現請教高人指導
回頂端
檢視會員個人資料 發送私人訊息
kmkna1103



註冊時間: 2008-05-08
文章: 119
來自: 台灣

第 2 樓

發表發表於: 星期四 一月 15, 2015 10:29 am    文章主題: 引言回覆

用這方法處理不知道為何圖片都是黑的
代碼:

*算法制作:行者孙(QQ:310727570)
*******************************************
FUNCTION RESIZEIMAGE
PARAMETERS  pSourceFileNAme,pNewFileNAme,nWidth,nHeight
DECLARE INTEGER GdiplusStartup IN gdiplus INTEGER @token, STRING @INPUT, INTEGER OUTPUT
LOCAL hToken, cInput
hToken = 0
cInput = PADR(CHR(1), 16, CHR(0))
GdiplusStartup(@hToken, @cInput, 0)
DECLARE INTEGER GdipLoadImageFromFile IN gdiplus.DLL STRING wFilename, INTEGER @nImage
LOCAL nImage
nImage = 0
GdipLoadImageFromFile(STRCONV(pSourceFileNAme + CHR(0), 5), @nImage)
#DEFINE   GDIPLUS_PIXELFORMAT_32bppARGB          0x0026200A
DECLARE INTEGER GdipCreateBitmapFromScan0 IN gdiplus.DLL ;
   INTEGER nWidth, INTEGER nHeight, INTEGER nStride;
   , INTEGER nPixelFormat, STRING @cScan0, INTEGER @nImage
LOCAL nBitmap, nX, nY
nBitmap = 0
nX = 0
nY = 0
GdipCreateBitmapFromScan0(nWidth, nHeight, 0, GDIPLUS_PIXELFORMAT_32bppARGB, 0, @nBitmap)
DECLARE INTEGER GdipGetImageGraphicsContext IN gdiplus.DLL INTEGER nImage, INTEGER @ nGraphics
LOCAL nGraphics
nGraphics = 0
GdipGetImageGraphicsContext (nBitmap, @nGraphics)
DECLARE INTEGER GdipDrawImageRect IN gdiplus.DLL ;
   INTEGER nGraphics, INTEGER nImage, SINGLE,SINGLE,SINGLE,SINGLE
GdipDrawImageRect(nGraphics, nImage, nX, nY, nWidth, nHeight)
LOCAL lcEncoder
lcEncoder = REPLICATE(CHR(0),16)
DECLARE INTEGER CLSIDFromString IN ole32 STRING lpsz, STRING @pclsid
CLSIDFromString(STRCONV("{557CF401-1A04-11D3-9A73-0000F81EF32E}" + CHR(0), 5), @lcEncoder)
DECLARE INTEGER GdipSaveImageToFile IN gdiplus.DLL ;
   INTEGER nImage, STRING wFilename, STRING qEncoder, INTEGER nEncoderParamsPtr
ERASE (pNewFileNAme)
DECLARE Long GdipDisposeImage IN Gdiplus.dll Long nativeImage
GdipDisposeImage(nImage)
GdipSaveImageToFile (nBitmap, STRCONV(pNewFileNAme,5) + CHR(0), lcEncoder, 0)
DECLARE INTEGER GdiplusShutdown IN gdiplus INTEGER token
GdiplusShutdown(hToken)
CLEAR DLLS
ENDFUNC
回頂端
檢視會員個人資料 發送私人訊息
elleryq



註冊時間: 2007-06-21
文章: 768


第 3 樓

發表發表於: 星期四 一月 15, 2015 10:58 am    文章主題: 引言回覆

我建議你用 Imagemagick
Imagemagick 是一堆指令的組合,可以直接使用 RUN 去呼叫。

要改變圖片大小,只要用 convert -resize
例如想縮小到 300x200 :
convert demo.png -resize 300x200 demo.jpg
或是縮小一半:
convert demo.png -resize 50% demo.jpg

除了這以外,還有許多功能。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
kmkna1103



註冊時間: 2008-05-08
文章: 119
來自: 台灣

第 4 樓

發表發表於: 星期四 一月 15, 2015 11:37 am    文章主題: 引言回覆

用你的方法可行,感謝
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作