16 진수 정수로 저장된 QImages를 이진 파일로 구성하려고합니다. 난 괜찮아에서 데이터를로드 할 수 있어요,하지만 난 QImage :: loadFromData (QBytearray 바) 기능을 사용하면 내 프로그램은 다음과 같이 (false를 반환) 실패 QBytearray에서 QImage 만들기
QBytearray frame;
QImage pic = QImage(256, 256, QImage::Format_RGB888);
for(int i = 0; i < height; i++) {
for(int j = 0; j < width; j++) {
// Access value of pixel at each location
datum = store[i][j];
for(int c = 0; c < 3; c++) {
// Calculate colour at given pixel
col = (255.0f * ((float)datum - (float)min)/((float)(max - min)));
// Assign colour value to the pixel
frame[c+3*j+3*i*width] = ((unsigned char)col);
}
}
}
pic.loadFromData(frame);
나는 내가 가진 자바 코드에서이 용도 변경 이전에 작성하는 (동일한 데이터에서) 의도 한대로 완벽하게 작동 :
BufferedImage image = = new BufferedImage(256, 256, BufferedImage.TYPE_3BYTE_BGR);
byte[] data = image.getRaster().getDataBuffer();
for (j=0; j<height; j++) {
for (i=0; i<width; i++) {
//Find value of the pixels at the location
datum=data[j][i];
for (c=0; c<3; c++) {
//Calculate the colour at the given pixel
col=(255.0f*((float)datum-(float)min)/((float)(max-min)));
//Assign the colour value to the pixel
data[c+3*i+3*j*width] = (byte)col;
}
}
}
아무도 내가이 잘못된납니다 위치를 확인하는 데 도움이 수 있습니까? 나는 며칠 동안 곤란을 겪었고 모든 아이디어가 없습니다.
'store'를 하드 코딩 된 미리 결정된 값으로 설정해 보셨습니까? 그렇다면 결과는 무엇입니까? 그렇지 않다면, 당신은 그것을 할 수 있고 우리에게 결과를 줄 수 있습니까? 당신이 그것을 완성 할 때'틀'은 무엇입니까? – MirroredFate
@MirroredFate 이미지가 256x256 인 것을 감안할 때 그럴 수는 없으므로 이미지의 값을 하드 코딩하는 데 약간 시간이 걸립니다. 그리고 프레임 제작을 마치면 프레임이란 무엇을 의미합니까? 크기? – Strongo
나를 당황하게 한 한 가지는 Bytearray를 파일 (직접 작동)에서로드 된 별도의 이미지에서 덤핑하면 QByteArray 2562 요소를 제공한다는 것입니다. 구성하는 요소는 196609 개 요소입니다. 이 (거대한) 크기 불일치는 문제의 적어도 일부라고 생각하지만 데이터 형식의 차이가 둘 사이에 어떤 차이가 있는지 알 수 없습니다. 196609 바이트 배열이 Java 구현에서 잘 작동했기 때문에 같은 크기의 이미지에 대한 C++ 바이트 배열이 왜 그렇게 작을 지 알 수 없습니다. – Strongo