핸드 헬드 장치에 사용자 서명을 저장하는 데 사용되는 응용 프로그램의 일부가 있습니다. 나는 "점"의 arraylist를 포함하는 "선"의 arraylist가있어서 이것을하기 위하여 처리했다. 이 정보를 SQL 데이터베이스에 저장해야합니다. 필자가 보았던 유일한 정보는 이미지 데이터 형식을 사용하고 바이트 배열을 전달하는 것입니다. 질문이 있습니다. 어떻게하면 좋을까요, 아니면 더 좋은 방법이 있을까요?포인트의 ArrayList를 SQL 데이터베이스에 저장할 바이트 배열로 변환
답변
이 데이터를 이미지로 변환하면 일부 정보 (어떤 점에 속하는 점)가 손실됩니다. 이 정보를 유지하려면 은 데이터를 직렬화해야합니다.
의 형식 결정 : ... 당신은 XML처럼 정말 자세한 뭔가를 사용할 수
<Line>
<Point X="3" Y="4" />
<Point X="3" Y="5" />
...
</Line>
<Line>
<Point X="10" Y="10" />
...
</Line>
...
을 ... 또는 일부 사용자 지정 텍스트 기반 형식 : 물론
3,4-3,5-...;10,10-...;...
, 일종의 바이너리 인코딩으로 데이터를 저장하는 것이 가장 효율적입니다.
텍스트 또는 XML 기반 형식을 사용하는 경우 직렬화는 SQL Server의 varchar(MAX)
또는 text
필드에 저장할 수있는 문자열을 생성합니다. 바이너리 인코딩을 결정하면 직렬화가 바이트 배열이됩니다. 이를 위해 varbinary(MAX)
또는 image
이 선택되는 데이터 유형입니다. image
이라는 이름은 오도 된 것일 수 있습니다.이 경우 이 아니며은 반드시 데이터가 "이미지"(jpeg, png 등)로 인코딩되었음을 의미합니다.
구현 : XML 및 표준 이진 인코딩의 경우 .NET에 기본 제공 기능이 있습니다. 다음은 MSDN에 연습에 대한 소개와 링크입니다 :
일부 사용자 정의 텍스트 기반 또는 사용자 정의 바이너리 인코딩을 결정하는 경우에는 직렬화 및 역 직렬화 부품을 직접 코딩해야합니다. 도움이 필요하면 다음과 같은 몇 가지 추가 정보를 제공해야합니다. 데이터 구조가 정확히 어떻게 보이나요? X 및 Y 좌표는 어떤 데이터 유형입니까?
그래서 사용자는 스타일러스 펜으로 서명하여 비트 맵 그래픽을 만들 수 있습니까? 이 이미지를 이미지로 저장하는 데 나에게 매우 합리적으로 들립니다. 바이너리 직렬화 어떤 형태를 원하는처럼
이미지로 저장하려고합니다. 그리고 그 질문입니다. 저장 방법을 알 수있는 유일한 방법은 바이트 배열이 필요한 "이미지"데이터 형식입니다. 나는 바이트 배열을 가지고 있지 않다. 나는 xy 점을 가지고있다. – MichaelMcCabe
좋아, 나는 비트 맵에서 시작하여 비트 맵에서 포인트 목록을 얻을 것이라고 생각했다. 음, 의심 스러울 때 : Marc Gravell을 믿으세요 :) –
소리가 난다;
using System.Collections.Generic;
using System.IO;
using ProtoBuf;
[ProtoContract]
class Line
{
private readonly List<Point> points = new List<Point>();
[ProtoMember(1, DataFormat = DataFormat.Group)]
public List<Point> Points { get { return points; } }
}
[ProtoContract]
class Point
{
[ProtoMember(1)]
public int X { get; set; }
[ProtoMember(2)]
public int Y { get; set; }
}
static class Program
{
static void Main()
{
var lines = new List<Line> {
new Line { Points = {
new Point { X = 1, Y = 2}
}},
new Line { Points = {
new Point { X = 3, Y = 4},
new Point { X = 5, Y = 6}
}},
};
byte[] raw;
// serialize
using (var ms = new MemoryStream())
{
Serializer.Serialize(ms, lines);
raw = ms.ToArray();
}
List<Line> clone;
// deserialize
using (var ms = new MemoryStream(raw))
{
clone = Serializer.Deserialize<List<Line>>(ms);
}
}
}
그냥 데이터에서 흑백 비트 맵을 만든 다음 .NET 라이브러리를 사용하여 PNG 이미지로 비트 맵 변환 : 여기 protobuf - 그물을 사용하여 작업 버전입니다 (나는 List<T>
에 ArrayList
변경 주)
MemoryStream pngbuffer = new MemoryStream();
Bitmap.Save(pngbuffer,ImageFormat.Png)
그리고 이진 데이터로 저장하십시오. 대부분의 데이터베이스는 이진 데이터를 저장하기위한 형식을 가지고 있습니다 : PostgreSQL bytea, MySQL 및 Oracle BLOB, MSSQL 이미지 등
- 1. ArrayList를 2D 배열로 변환
- 2. HashMap에서 배열로 가져온 ArrayList를 변환
- 3. 테이블을 바이트 배열로 변환
- 4. 샘플이있는 배열을 바이트 배열로 변환
- 5. 그러나 바이트 배열로 메모리를 변환 하시겠습니까?
- 6. Java : 바이트 배열을 바이트 배열로 변환
- 7. 구조체를 .NET의 바이트 배열로 변환
- 8. Java 문자열을 바이트 배열로 변환
- 9. 문자열 배열을 바이트 배열로 변환
- 10. IronPython - 바이트 배열로 int 변환
- 11. 클래스를 바이트 배열로 변환 + C#
- 12. tiff 바이트 배열을 C 바이트로 itextsharp를 사용하여 바이트 배열로 변환
- 13. int를 C의 바이트 배열로 변환 하시겠습니까?
- 14. JPEG 이미지를 바이트 배열로 변환 - COM 예외
- 15. VB.NET에서 double 배열을 바이트 배열로 변환 하시겠습니까?
- 16. UTF-8에서 문자열을 바이트 배열로 변환 하시겠습니까?
- 17. C에서 바이트 배열을 short 배열로 변환
- 18. Java - 오디오의 바이트 배열을 정수 배열로 변환
- 19. 바이트 배열을 비트 배열로 변환 하시겠습니까?
- 20. 자바에서 임의의 객체를 바이트 배열로 변환
- 21. 이미지를 Matlab의 png 바이트 배열로 변환
- 22. VB6에서 그림 상자 이미지를 바이트 배열로 변환
- 23. 객체를 바이트 배열로 변환 (소켓을 통해 전송). 다시 그것을 변환
- 24. SQL Server 데이터베이스에 저장할 XML의 .NET 압축
- 25. 어떻게 힙에 저장할 수있는 동등한 바이트 배열로 .net single을 캐스트합니까?
- 26. 문자열의 ArrayList를 BufferedReader로 변환
- 27. NSString을 바이트 배열로 변환하십시오.
- 28. Java에서 열 지향 배열로 변환
- 29. winform에서 비트 맵으로 패널 도면을 캡처하여 SQL 데이터베이스에 저장할 수 있습니까?
- 30. java arraylist를 javascript 배열로 변환하는 방법?
나는 이런 식으로 끝내었다. 감사합니다 Heinzi – MichaelMcCabe