2015-01-23 2 views
0

내 목적은 지정된 지점에서 원본 이미지 내부에 작은 이미지를 그립니다. 지정된 행만 변경하고 모든 원본 행을 다시 쓰지 않으려면 어떤 방법이 있습니까? 하위 이미지 행만 작성하려고했지만 결과는 예측 가능했습니다.PNGj : 행 쓰기 순서

ar.com.hjg.pngj.PngjOutputException: rows must be written in order: expected:0 passed:1781 

답변

2

PNG 형식은 zlib 압축을 사용합니다. 각 행의 압축 된 표현은 선행 압축 된 데이터에 따라 달라지며 PNG 필터링 때문에 이전 행에도 종속 될 수 있습니다. 따라서 전체 이미지를 읽고 변경하려는 행을 변경 한 다음 전체 이미지를 다시 작성해야합니다.

이론적으로 각 행의 시작 부분에서 압축기를 플러시하고 다시 시작하여 편집 할 수있는 PNG를 작성할 수 있지만 결과적으로 압축률이 떨어질 수 있습니다. 나는 실제로 그것을하는 어떤 어플리케이션을 모른다. 또한 이전 행에 액세스 할 필요가없는 NONE 및 SUB 필터 만 PNG 필터링을 제한해야합니다.

전체 이미지를 다시 작성하는 것이 가장 좋습니다.

0

pngw.writeRow(iLine, rowNum);을 사용하여 특정 행을 쓸 수 있습니다. 여기서 pngw는 PngWriter이고 iLine은 ImageLineInt이며 rowNum은 쓰고 자하는 행의 번호입니다.