elGringo Posted December 10, 2016 Share Posted December 10, 2016 this Code perfectly works in VCL ... twic:=TWICImage.Create; twic.LoadFromFile( 'C:\DELPHI\MyStudyProjects\379_UniShowCase\Win32\Debug\UploadFolder\1{9BC6125C-1114-4350-B769-D998BF1D6357}.JPG' ); Image.Picture.Bitmap.Assign(twic); ... The same code in UniGUI gives AV on LoadFromFile twic:=TWICImage.Create; twic.LoadFromFile( 'C:\DELPHI\MyStudyProjects\379_UniShowCase\Win32\Debug\UploadFolder\1{9BC6125C-1114-4350-B769-D998BF1D6357}.JPG' ); uniImage1.Picture.Bitmap.Assign(twic); How to avoid? I like TWIC because it supports a lot of picture formats. Quote Link to comment Share on other sites More sharing options...
elGringo Posted December 10, 2016 Author Share Posted December 10, 2016 Ok, changed for uniimage:=TUniImage.Create(UniApplication); uniImage.Picture.LoadFromFile( 'C:\DELPHI\MyStudyProjects\379_UniShowCase\Win32\Debug\UploadFolder\1{9BC6125C-1114-4350-B769-D998BF1D6357}.JPG' ); works perfect but which formats support? I tested with JPG. Where can I see full list of supported formats - is it the same as TImage? Quote Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted December 10, 2016 Administrators Share Posted December 10, 2016 It supports JPG, Gif, PNG and BMP. Quote Link to comment Share on other sites More sharing options...
elGringo Posted December 10, 2016 Author Share Posted December 10, 2016 Thanks! Quote Link to comment Share on other sites More sharing options...
elGringo Posted December 10, 2016 Author Share Posted December 10, 2016 I diminish pic like this but cannot save it to file. Uniimage doesn't have save methods and uniimage.picture has origin sizes after such diminishing procedure TDiminishPic.ProportionalDiminishPicSize( FilePath:string; var uniimageSource:TUniImage; var uniimageDest:TUniImage; maxWidth:Integer; maxHeight:Integer ); var currentWidth: integer; currentHeight: integer; koeff: Extended; begin // Checks... if FilePath='' then exit; if not ( Assigned(uniimageSource) ) or not ( Assigned(uniimageDest) ) then exit; //Proportional diminishing uniimageSource.Picture.LoadFromFile(FilePath); currentWidth:=uniimageSource.Picture.Width; currentHeight:=uniimageSource.Picture.Height; if (currentWidth>maxWidth) or (currentHeight>maxHeight) then koeff:=Min(maxWidth/currentWidth,maxHeight/currentHeight) else koeff:=1; if koeff<>1 then begin uniimageDest.Width:=MaxWidth; uniimageDest.Height:=MaxHeight; uniimageDest.Proportional:=true; uniimageDest.Stretch:=true; uniimageDest.Assign(uniimageSource); end else begin uniimageDest.Width:=uniimageSource.Width; uniimageDest.Height:=uniimageSource.Height; uniimageDest.Assign(uniimageSource); end; end; if to put uniImageDest on form - it is Ok - image is shown diminished. But how to save diminished picture to file? tuniimage doesn't have SaveToFile method Quote Link to comment Share on other sites More sharing options...
elGringo Posted December 11, 2016 Author Share Posted December 11, 2016 Changed code to use GDI+ and all works fine now uses GDIPOBJ procedure TDiminishPic.ProportionalDiminishPicSize2 (FilePath:string; maxWidth,maxHeight:Integer; var bmpDest:TBitmap); var uniimage:TUniImage; currentWidth: Integer; currentHeight: Integer; koeff: Extended; NewWidth: Integer; NewHeight: Integer; begin // uniimage:=TUniImage.Create(UniMainModule.UniApplication); uniimage.Picture.LoadFromFile(FilePath); currentWidth:=uniimage.Picture.Width; currentHeight:=uniimage.Picture.Height; //Calculating koeff if (currentWidth>maxWidth) or (currentHeight>maxHeight) then koeff:=Min(maxWidth/currentWidth,maxHeight/currentHeight) else koeff:=1; if koeff<>1 then begin NewWidth:=trunc(currentWidth*koeff); NewHeight:=Trunc(currentHeight*koeff); LoadAAImageFromFile(FilePath,NewWidth,NewHeight,bmpDest); end else LoadAAImageFromFile(FilePath,currentWidth,currentHeight,bmpDest); end; procedure TDiminishPic.LoadAAImageFromFile(FileName: String; W,H: Integer; Pic: TBitmap); var ImageTemp: TGPImage; graphicsGDIPlus: TGPGraphics; begin if FileExists(FileName) then begin Pic.Width:=W; Pic.Height:=H; graphicsGDIPlus:=TGPGraphics.Create (Pic.Canvas.Handle); ImageTemp:=TGPImage.Create(FileName ); // Trouble here graphicsGDIPlus.DrawImage(ImageTemp , 0,0,W,H); ImageTemp.Free; graphicsGDIPlus.Free; end; end; Example how to use ... bmp:=tbitmap.Create; DiminishPic.ProportionalDiminishPicSize2( 'C:\DELPHI\MyStudyProjects\379_UniShowCase\Win32\Debug\UploadFolder\1{32B0316E-82F5-4CD8-B0DA-20451D7AC7F0}.JPG', 128, 128, bmp ); bmp.SaveToFile('C:\DELPHI\MyStudyProjects\379_UniShowCase\Win32\Debug\UploadFolder\thumbnails\123_thumb.jpg'); ... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.