커뮤니티를 던졌습니다 TBitmap으로 작업하십시오. 문제는, 장치의 저장소에서 TBitmap을 만들 수 없다는 것입니다. 내 컴퓨터에서 Win32-app로 응용 프로그램을 실행하면 모두 작동하지만, android-app로 실행하면 제목에서 예외가 발생합니다.델파이 XE7 Firemonkey은은 TBitmap 양식 파일 작성</p> <p>내 문제는 다음이다 EJNIException java.lang.OutOfMemoryError와
여기 내 코드입니다 :
procedure TForm1.Button1Click(Sender: TObject);
var
MyImage: TBitmap;
Path: String;
begin
Path := TPath.GetDocumentsPath + TPath.DirectorySeparatorChar + 'test.png';
if TFile.Exists(path, true) then
begin
MyImage := TBitmap.CreateFromFile(path); //<- Here it fails
end;
end;
이 코드는 아무 의미가 없습니다 그러나 이것은 단지 테스트 프로그램입니다. 이것이 작동하면 주 프로그램에서 사용할 수 있지만 이미이 시점에서 실패합니다. 여기
(그리고 난 이미 그가 FMX.Graphics.TBitmap 아닌 VCL을 사용하는 것을 확인했다) 내 스택입니다 :
System._DbgExcNotify(86,0x11fc0b0,0x5bf3b0dd,0x11fc0b0,0x5bf3b0dd)
System.NotifyReRaise(0x11fc0b0,0x5bf3b0dd)
System._RaiseAtExcept(0x11fc0b0,0x5bf3b0dd)
System._RaiseExcept(0x11fc0b0)
System.Internal.Excutils.DoRaiseJNIExceptionCallBack('class java.lang.OutOfMemoryError','java.lang.OutOfMemoryError')
Androidapi.Jni.HandleJNIException(0xbe42f8)
Androidapi.Jnimarshal.ExecJNI(0x5d226490,0x125e998)
:5C8B8A14 DispatchToImport
:5C8C4FA8 dispatch_first_stage_intercept
Fmx.Graphics.Android.TBitmapCodecAndroid.LoadFromFile(0x127e7f8,'/data/data/com.embarcadero.Project1/files/test.png',0x1297040,4096)
Fmx.Graphics.TBitmapCodecManager.LoadFromFile(0x5cbab65c,'/data/data/com.embarcadero.Project1/files/test.png',0x1297040,4096)
Fmx.Graphics.TBitmap.LoadFromFile(0x127e788,'/data/data/com.embarcadero.Project1/files/test.png')
Fmx.Graphics.TBitmap.TBitmap(0x127e788,1,'/data/data/com.embarcadero.Project1/files/test.png')
Unit1.TForm1.Button1Click(0xad1c48,0x103dbd8)
[...] rest is unneccessary
오류는가? 내 잘못입니까, 아니면 델파이 뭔가 잘못 됐나요?
이미지의 크기는 어느 정도입니까? 매우 큰 경우 앱의 메모리 한도를 초과 할 수 있습니다. 크기 및 파일 크기를 알려주십시오. –
Btw 짧은 데모 프로그램을 제공하기위한 훌륭한 작업 - 많은 사람들이하지 않습니다. 특히 작은 테스트/데모에서 재생산을 위해 누군가가 이와 같이 디버깅 작업을하는 것을 보는 것이 좋습니다. 잘 했어 +1. –
테스트 이미지가 매우 작습니다. 파일 크기는 8KB이고 이미지 크기는 290p * 250p입니다. 나는 캐주얼 블랙 "A"페인트로 그렸습니다. 투명성이나 특별한 것이 없습니다. 이 테스트 이미지를로드 할 수없는 이유를 모르겠습니다. – Adam