저는 8x8 픽셀의 4 채널 png 이미지가 QImage
에 의해로드됩니다. 그러면 QImage
은 200 배로 조정되므로 이미지의 해상도는 1600x1600이고 원본 픽셀의 크기는 200x200입니다. 그러나이 이미지가 QPixmap
의 수단을 통해 QLabel
에 추가되고 화면에 표시되면 그려지는 픽셀의 크기가 약간 다를 수 있습니다.크기가 조정 된 QImage를 그릴 때 픽셀 크기를 균일하게 유지하는 방법은 무엇입니까?
나는 Gimp
으로 스크린 샷을 찍고 그려진 이미지를 더 자세히 보았습니다. 다른 모든 픽셀은 200 픽셀 너비 대신 201 픽셀이어야합니다. 행의 마지막 픽셀은 보정을 위해 더 작아 지므로 전체 이미지의 끝에 올바른 크기가 적용됩니다.
이 100 예를 들어 괜찮 모든 확장 요인 발생하지 않는 등 같은 256
내 원래의 접근 방식은 QGraphicsView
과 QGraphicsPixmapItem
경우에 사용하던 같은 2의 거듭 제곱있는 요인이다 Image 대신 GraphicsItem 크기를 조정했습니다. 효과는 동일했습니다.
여기에 어떤 영향이 있습니까? 그리고 무엇이 그것에 대해 할 수 있습니까?
이 문제를 재현하는 코드는 매우 간단합니다
int scale = 200;
image = QImage("some image file");
QPixmap pixmap = QPixmap::fromImage(image.scaled(image.size() * scale));
some_label->setPixmap(pixmap);
이 방법으로 문제를 해결할 수는 없지만 여기 (확대되지 않은) 픽스맵을 그릴 때 직접 조정할 수는 있습니다. https://github.com/gerbilvis/gerbil/blob/master/gui/ 위젯/scaledview.cpp # L103 크기 조정은 여기에 설정된 QTransform을 통해 이루어집니다 : https://github.com/gerbilvis/gerbil/blob/master/gui/widgets/scaledview.cpp#L72 (QTransform은 설정하기가 훨씬 쉽습니다.) 고정 된 규모와 번역) Btw. 이것은 GL 렌더링 백엔드를 사용하는 매우 효율적인 방법입니다. – ypnos
감사합니다. 나는이 문제가 스케일링 알고리즘으로부터 왔을 것이라고 짐작하지 못했을 것이다. 나는 단순한 회화/발표 문제라고 생각했다. 그러나 나는 방금 스케일 된 이미지를 디스크에 저장했다. 팁 고마워 :) – ifschleife