나는 JSON 배열에 이미지를 변환하는 응용 프로그램이 있고 나는 BLOB 필드로 저장 해요 :JSON 문자열을 이미지로 변환하는 방법은 무엇입니까?
function getImage(): String;
var
memorystream : TMemoryStream;
jsonArray : TJSONArray;
begin
memorystream := TMemoryStream.Create;
myImage.Picture.Graphic.SaveToStream(memorystream);
memorystream.Position := 0;
jsonArray := TJSONArray.Create;
jsonArray := TDBXJSONTools.StreamToJSON(memorystream, 0, memorystream.Size);
memorystream.Free;
Result := jsonArray.ToString;
end;
PNG 이미지의 convertion의 결과는 다음과 같습니다
[137,80,78,71,13,10,26,10,0,0, ... ]
이 결과는이 코드로 다시 얻을 BLOB 필드에 저장됩니다 여기
stream := TStream.Create;
stream := cdsPesquisa.CreateBlobStream(fieldAux, bmRead);
stream.Position := 0;
jsonArray := TJSONArray.Create;
jsonArray := TDBXJSONTools.StreamToJSON(stream, 0, stream.Size);
, 나는 처음에 같은 JSON 문자열 [137,80,78,71,13,10,26,10,0,0, ... ]
이 하지만이 JSON 배열을 이미지로 다시 변환해야합니다.
어떻게하면됩니까?
json 문자열로 저장하면 저장 요구 사항이 크게 늘어납니다. 예 : 텍스트 형식의 '137'은 3 바이트입니다. 0x89 16 진수 바이트로 저장 한 경우 1 바이트. –
'TDBXJSONTools.StreamToJSON'을 사용하여 배열로 변환하는 경우,'TDBXJSONTools.JSONToStream'을 사용하여 되돌릴 필요가 있다고 생각합니다. 하지만 TBlobField에 JSONArray를 변환하여 변환 한 다음 변환하지 않고 원시 데이터를 저장할 수있을 때 다시 변환하는 것은 의미가 없습니다. –
글쎄,이 json 문자열 대신 16 진수 함께 보낼 바이트 변경할 보낼 수 있지만 이것은 내 문제가되지 않습니다.이 문자열을 내 서버로 보내야합니다. 회신을 보내 주셔서 감사합니다 –