以下摘自 byliu(byliu) byliu.bbs@cis.nctu.edu.tw Devil(璉璉) Devil.bbs@vlsi1.iie.ncku.edu.tw ---------------------------------------------------------------------------- 發信人: byliu.bbs@cis.nctu.edu.tw (byliu), 信區: fortran 標 題: 請問可以用fortran讀取圖檔(*.tif)嗎?? 發信站: 交大資科_BBS (Fri Oct 9 23:09:14 1998) 可以用 FORTRAN (PowerStation 4.0)讀取 TIF 格式的圖檔嗎 就是將圖檔(例如640*480)上每個畫素的R G B三種顏色的亮度值(0~255) 分別存成三個(640*480)矩陣?? 有人試著寫過類似的程式嗎.....用fortran喔... 發信人: Devil@bar (璉璉), 信區: fortran 標 題: Re: 請問可以用fortran讀取圖檔(*.tif)嗎?? 發信站: 成大資訊所_BBS ( Oct 19 10:41:23 1998) PowerStation 只提供 Bitmap 圖檔格式處理, 並不提供其它格式. 然後用 Windows API 函數... PowerStation 4.0 定義在那我忘了, 到 include 目錄中找相關 Windows API 定義的 f90 檔 (會有同名的 mod) 在程式開始使用 use filename (Visual Fortran 中是用 use DFWIN) (PowerStation 4.0 用 use MSFWIN) 在程式中利用 GetPixel 取得特定點的顏色值, 再用 GetRedValue, GetGreenValue, GetBlueValue 取得顏色值! 另外如果要換算 32 位元顏色值可用 RGB 在 Visual Fortran 5.0 中是這樣宣告的 (PoserStation 4.0 類似) ------------------------------------------------------------------ interface integer function MSFWIN$GetPixel (dummy0,dummy1,dummy2) !DEC$ IF DEFINED(_X86_) !DEC$ ATTRIBUTES STDCALL, ALIAS : '_GetPixel@12' :: MSFWIN$GetPixel !DEC$ ELSE !DEC$ ATTRIBUTES STDCALL, ALIAS : 'GetPixel' :: MSFWIN$GetPixel !DEC$ ENDIF integer dummy0 integer dummy1 integer dummy2 end function MSFWIN$GetPixel end interface interface BYTE function GetRedValue(param) !DEC$ IF DEFINED(_X86_) !DEC$ ATTRIBUTES STDCALL, ALIAS : '_GetRedValue@4' :: GetRedValue !DEC$ ELSE !DEC$ ATTRIBUTES STDCALL, ALIAS : 'GetRedValue' :: GetRedValue !DEC$ ENDIF integer param end function GetRedValue end interface interface BYTE function GetGreenValue(param) !DEC$ IF DEFINED(_X86_) !DEC$ ATTRIBUTES STDCALL, ALIAS : '_GetGreenValue@4' :: GetGreenValue !DEC$ ELSE !DEC$ ATTRIBUTES STDCALL, ALIAS : 'GetGreenValue' :: GetGreenValue !DEC$ ENDIF integer param end function GetGreenValue end interface interface BYTE function GetBlueValue(param) !DEC$ IF DEFINED(_X86_) !DEC$ ATTRIBUTES STDCALL, ALIAS : '_GetBlueValue@4' :: GetBlueValue !DEC$ ELSE !DEC$ ATTRIBUTES STDCALL, ALIAS : 'GetBlueValue' :: GetBlueValue !DEC$ ENDIF integer param end function GetBlueValue end interface interface integer(4) function RGB (red, green, blue) !DEC$ IF DEFINED(_X86_) !DEC$ ATTRIBUTES STDCALL, ALIAS : '_Rgb@12' :: RGB !DEC$ ELSE !DEC$ ATTRIBUTES STDCALL, ALIAS : 'Rgb' :: RGB !DEC$ ENDIF BYTE red BYTE green BYTE blue end function RGB end interface