  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		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    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 用你的方法可行,感謝 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |