rapot Posted February 12, 2011 Share Posted February 12, 2011 How can I use a BufferedImage as an array of byte? Local $aImage[$Height][$Width] Please help me Thank Link to comment Share on other sites More sharing options...
PsaltyDS Posted February 12, 2011 Share Posted February 12, 2011 Where is the BufferedImage data going to come from, Java? Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
rapot Posted February 13, 2011 Author Share Posted February 13, 2011 HiBufferedImage in there program is $hImage2#include <GDIP.au3> _GDIPlus_Startup() $FileName = FileOpenDialog("Select an image", @ScriptDir & "\", "Images (*.jpg;*.bmp;*.png;*.gif)", 1) $hImage1 = _GDIPlus_ImageLoadFromFile($FileName) $hImage2 = _GDIPlus_ImageGreyscale($hImage1) $Width = _GDIPlus_ImageGetWidth($hImage2) $Height = _GDIPlus_ImageGetHeight($hImage2) $hGUI = GUICreate("Convert image to greyscale", $Width, $Height) GUISetState() $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI) _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage2, 0, 0, $Width, $Height) _GDIPlus_ImageDispose ($hImage1) _GDIPlus_ImageDispose ($hImage2) _GDIPlus_ShutDown () While GUIGetMsg() <> -3 * Sleep(50) WEndI want create an array like $aImage[$Height][$Width] from $hImage2Someone please help me Link to comment Share on other sites More sharing options...
guinness Posted February 13, 2011 Share Posted February 13, 2011 (edited) Like this >> #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GDI.au3> _GDIPlus_Startup() Global $FileName = FileOpenDialog("Select an image", @ScriptDir & "\", "Images (*.jpg;*.bmp;*.png;*.gif)", 1) Global $hImage1 = _GDIPlus_ImageLoadFromFile($FileName) Global $hImage2 = _GDIPlus_ImageGreyscale($hImage1) Global $Width = _GDIPlus_ImageGetWidth($hImage2) Global $Height = _GDIPlus_ImageGetHeight($hImage2) Global $aDimension[2] = [$Width, $Height]; <<<<< I think this is what you were asking for?! Global $hGUI = GUICreate("Convert image to greyscale", $aDimension[0], $aDimension[1]) ; <<<<< Changed for the Array variables. GUISetState() Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage2, 0, 0, $aDimension[0], $aDimension[1]) ; <<<<< Changed for the Array variables. _GDIPlus_ImageDispose($hImage1) _GDIPlus_ImageDispose($hImage2) _GDIPlus_Shutdown() While GUIGetMsg() <> -3 * Sleep(50) WEnd Edited February 13, 2011 by guinness UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
UEZ Posted February 13, 2011 Share Posted February 13, 2011 (edited) Do you mean something like this: expandcollapse popup;coded by UEZ 2011 #include <Array.au3> #include <GDIPlus.au3> $file = FileOpenDialog("Select an image to convert it to greyscale", "", "Images (*.jpg;*.png;*.bmp;*.gif;*.tif)", 1) If @error Then Exit _GDIPlus_Startup () $hImage = _GDIPlus_ImageLoadFromFile($file) $hContext = _GDIPlus_ImageGetGraphicsContext($hImage) _Greyscale($hImage, $hContext) ;~ $newfile = StringRegExpReplace($file, "(.*)\.(.+)", "$1") & "_Grey.jpg" ;~ _GDIPlus_ImageSaveToFile($hImage, $newfile) $aDim = _GDIPlus_ImageGetDimension($hImage) $width = $aDim[0] $height = $aDim[1] $hGUI = GUICreate("Convert image to greyscale", $width, $height) GUISetState() $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI) _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 0, 0, $width, $height) Dim $aImage[$height][$width] For $y = 0 To $height - 1 For $x = 0 To $width - 1 $aImage[$y][$x] = "0x" & Hex(_GDIPlus_BitmapGetPixel($hImage, $x, $y), 8) Next Next _ArrayDisplay($aImage, "Array with pixel information") While GUIGetMsg() <> -3 WEnd _GDIPlus_GraphicsDispose($hContext) _GDIPlus_ImageDispose($hImage) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() GUIDelete($hGUI) Exit Func _Greyscale($hImage, $hImageContext, $rl = 0.3086, $gl = 0.6094, $bl = 0.0820) Local $tNegMatrix, $pNegMatrix, $hIA $hIA = _GDIPlus_ImageAttributesCreate() $aImageSize = _GDIPlus_ImageGetDimension($hImage) If $hImage Then $tNegMatrix = _GDIPlus_ColorMatrixCreateGrayScale($rl, $gl, $bl) $pNegMatrix = DllStructGetPtr($tNegMatrix) _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pNegMatrix) _GDIPlus_GraphicsDrawImageRectRectIA($hImageContext, $hImage, 0, 0, $aImageSize[0], $aImageSize[1], 0, 0, $aImageSize[0], $aImageSize[1], $hIA) _GDIPlus_ImageAttributesDispose($hIA) EndIf EndFunc Func _GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY) Local $aResult = DllCall($ghGDIPDll, "uint", "GdipBitmapGetPixel", "hwnd", $hBitmap, "int", $iX, "int", $iY, "uint*", 0) If @error Then Return SetError(@error, @extended, 0) Return $aResult[4] EndFunc ;==>_GDIPlus_BitmapGetPixel Func _GDIPlus_ImageGetDimension($hImage) Local $aSize[2], $aResult $aResult = DllCall($ghGDIPDll, "uint", "GdipGetImageDimension", "hwnd", $hImage, "float*", 0, "float*", 0) If @error Then Return SetError(@error, @extended, -1) $GDIP_STATUS = $aResult[0] If $GDIP_STATUS Then Return -1 $aSize[0] = $aResult[2] $aSize[1] = $aResult[3] Return $aSize EndFunc ;==>_GDIPlus_ImageGetDimension Func _GDIPlus_ImageAttributesCreate() Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateImageAttributes", "int*", 0) If @error Then Return SetError(@error, @extended, 0) Return $aResult[1] EndFunc ;==>_GDIPlus_ImageAttributesCreate Func _GDIPlus_ColorMatrixCreateGrayScale($GDIP_RLUM = 0.3086, $GDIP_GLUM = 0.6094, $GDIP_BLUM = 0.0820) Local Const $tagGDIPCOLORMATRIX = "float m[25];" Local $iI, $iJ, $tCM, $aLums[4] = [$GDIP_RLUM, $GDIP_GLUM, $GDIP_BLUM, 0] $tCM = DllStructCreate($tagGDIPCOLORMATRIX) For $iI = 0 To 3 For $iJ = 1 To 3 DllStructSetData($tCM, "m", $aLums[$iI], $iI * 5 + $iJ) Next Next DllStructSetData($tCM, "m", 1, 19) DllStructSetData($tCM, "m", 1, 25) Return $tCM EndFunc ;==>_GDIPlus_ColorMatrixCreateGrayScale Func _GDIPlus_ImageAttributesSetColorMatrix($hImageAttributes, $iColorAdjustType = 0, $fEnable = False, $pClrMatrix = 0, $pGrayMatrix = 0, $iColorMatrixFlags = 0) Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetImageAttributesColorMatrix", "hwnd", $hImageAttributes, "int", $iColorAdjustType, "int", $fEnable, "ptr", $pClrMatrix, "ptr", $pGrayMatrix, "int", $iColorMatrixFlags) If @error Then Return SetError(@error, @extended, False) Return $aResult[0] = 0 EndFunc ;==>_GDIPlus_ImageAttributesSetColorMatrix Func _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hImage, $nSrcX, $nSrcY, $nSrcWidth, $nSrcHeight, $nDstX, $nDstY, $nDstWidth, $nDstHeight, $hImageAttributes = 0, $iUnit = 2) Local $aResult = DllCall($ghGDIPDll, "int", "GdipDrawImageRectRect", "hwnd", $hGraphics, "hwnd", $hImage, "float", $nDstX, "float", _ $nDstY, "float", $nDstWidth, "float", $nDstHeight, "float", $nSrcX, "float", $nSrcY, "float", $nSrcWidth, "float", _ $nSrcHeight, "int", $iUnit, "hwnd", $hImageAttributes, "int", 0, "int", 0) If @error Then Return SetError(@error, @extended, False) Return $aResult[0] = 0 EndFunc ;==>_GDIPlus_GraphicsDrawImageRectRectIA Func _GDIPlus_ImageAttributesDispose($hImageAttributes) Local $aResult = DllCall($ghGDIPDll, "uint", "GdipDisposeImageAttributes", "hwnd", $hImageAttributes) If @error Then Return SetError(@error, @extended, False) Return $aResult[0] = 0 EndFunc ;==>_GDIPlus_ImageAttributesDispose Use a small picture first to see the result in the array. Br, UEZ Edited February 13, 2011 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
rapot Posted February 13, 2011 Author Share Posted February 13, 2011 Thank for your help I think it has solved the main problem. I have been doing so already. I known programs run slower when using _GDIPlus_BitmapGetPixel function too many. I thought about the create $aImage[$y][$x] at the same time with the transfer to grayscale but i can't do it PixelRGB[$i][$j] -> PixelGray[$i][$j] aImage[$i][$j]=PixelGray[$i][$j] I want a solution as above Please help me.GDIP.rar Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now