면책 조항 : 저는 지금 당장 어디서나 전문가가 아니기 때문에 (1) 다음 중 일부 또는 전부가 틀릴 수도 있습니다. (2) 분명히 당신보다 덜 구체적 일 것입니다. (3) 다른 사람이 잘 아는 사람이라면 이미 응답을 보면서 연기하지 않기를 바란다. 어쨌든 :
Image
클래스의 pixelColor
메서드를 사용하여 픽셀 값을 하나씩 읽을 수있는 것처럼 보입니다. 그러면 R, G, B 구성 요소를 추출 할 수있는 PythonMagick.Color
값이 반환됩니다. 기본 C++ 라이브러리는 Image::writePixels
을 사용하여 한 번에 많은 픽셀을 읽는 것을 지원합니다.이 또한 PythonMagick.Image
에 있습니다. 하지만 그 방법의 적절한 사용은 PythonMagick에서 구현되지 않은 다른 것들에 달려 있다고 생각합니다. 한 번에 한 픽셀 씩 읽는 것보다 훨씬 효율적이었을 거라고 생각합니다.
이미지의 내용을 메모리에있는 PythonMagick.Blob
객체에 쓸 수있는 것처럼 보입니다. 이는 기본적으로 파일없이 파일에만 쓰는 것과 같습니다 .-)). 파일에 쓸 때와 마찬가지로 작성해야하는 형식을 선택할 수 있습니다. Blob
의 내용을 추출하는 데는 get_blob_data
이있는 것으로 보입니다. 이런 식으로 뭔가 :
im = PythonMagick.Image('image.jp2')
blob = PythonMagick.Blob()
im.write(blob, "png")
data = PythonMagick.get_blob_data(blob)
결과 data
누구 바이트 이미지의 이진 표현이다 파이썬 문자열 내 생각이다. (저는 파이썬 2.x를 사용하고 있다고 가정합니다. 문자열 타입은 8 비트입니다. 파이썬 매기 크릭이 3.x에서 작동하는지 여부는 모르겠습니다.) 기본적으로 원시 픽셀 데이터 인 몇 가지 형식이 있다고 생각합니다. "RGB"를 시도하십시오. 그런 다음 struct.unpack
또는 기타의 롯트를 통해 내용을 추출 할 수 있습니다.
제안에 감사드립니다. Gareth. get_blob_data 메소드가있는 PythonMagick의 어떤 버전을 찾았습니까? 현재 우분투 저장소에서 0.9.1 버전을 사용하고 있습니다. numpy는 이미 배열 형식 (http://dmr.ath.cx/gfx/python/)에 입력 될 것으로 예상하므로 궁극적으로 픽셀 반복기를 사용해야 할 수도 있습니다. –
ImageMagick 웹 사이트에서 최신 버전의 소스 코드를보고 있다고 생각합니다. 그것은 내가 어떻게 든 그것을 오해했을 가능성이 완전히 있습니다 - 내가 말했듯이, 나는 PythonMagick 전문가가 아니다. –
작동 : open ("foo.png", "wb"). write (blob.data) get_blob_data()를 호출 할 필요가 없습니다 .... –