การแปลงรูปภาพเป็น pixmap โดยใช้ไลบรารี ImageMagic

งานของฉันคือให้ "อ่านรูปภาพเป็น pixmap แล้วคุณจะแปลงเป็นแผนที่พื้นผิว" ดังนั้นสำหรับส่วนของ pixmap เท่านั้น โปรดฟังฉันและบอกฉันว่าฉันมีความคิดที่ถูกต้องหรือไม่ และมีวิธีที่ง่ายกว่านี้หรือไม่ เอกสารห้องสมุดที่ฉันใช้: http://www.imagemagick.org/Magick++/Documentation.html< /ก>

อ่านในภาพ:

Image myimage;
myimage.read( "myimage.gif" );

ฉันคิดว่านี่คือ pixmap ที่ฉันต้องอ่าน 'รูปภาพ' ใน:

GLubyte pixmap[TextureSize][TextureSize][3];

ดังนั้นฉันคิดว่าฉันต้องการลูปที่สำหรับดัชนีพิกเซล 'pixmap' ทุกอันให้กำหนดค่า R, G, B จากดัชนีพิกเซล 'รูปภาพ' ที่สอดคล้องกัน ฉันคิดว่าตัวลูปเป็นเช่นนี้:

pixmap[i][j][0] = myimage.pixelColor(i,j).redQuantum(void);
pixmap[i][j][1] = myimage.pixelColor(i,j).greenQuantum(void);
pixmap[i][j][2] = myimage.pixelColor(i,j).blueQuantum(void);

แต่ฉันคิดว่าฟังก์ชันข้างต้นส่งคืน Quantums โดยที่ฉันต้องการ GLubytes ดังนั้นมีใครสามารถช่วยได้บ้าง

-- OR --

บางทีฉันสามารถดูแลทั้ง pixmap และแผนที่พื้นผิวได้โดยใช้ OpenIL (เอกสารที่นี่: http://openil.sourceforge.net/tuts/tut_10/index.htm) คิดว่าฉันสามารถเรียกสิ่งเหล่านี้ตามลำดับได้หรือไม่?

ilutOglLoadImage(char *FileName);
ilutOglBindTexImage(ILvoid);

person Rooster    schedule 30.11.2011    source แหล่งที่มา


คำตอบ (1)


คุณสามารถคัดลอกค่าควอนตัมที่ส่งคืนโดย pixelColor(x,y) ถึง ColorRGB และคุณจะได้รับค่าสีที่ทำให้เป็นมาตรฐาน (0.0,1.0)

หากคุณไม่ต้องยึดติดกับ Magick++ คุณอาจลองใช้ OpenIL ซึ่งสามารถโหลดและแปลงรูปภาพของคุณเป็น แผนที่พื้นผิว OpenGL โดยไม่ต้องยุ่งยากมากเกินไป

person tbalazs    schedule 30.11.2011
comment
จริงๆ แล้ว OpenIL ดูค่อนข้างเรียบง่าย โปรดดูการแก้ไขของฉันด้านบน นั่นคือทั้งหมดที่คุณจะเรียก? ฉันจะลองดู; หากได้ผล คำตอบนี้จะได้รับการตรวจไขมันครั้งใหญ่ - person Rooster; 01.12.2011
comment
เพียงเรียก ilutOglLoadImage ด้วยชื่อไฟล์ที่คุณต้องการโหลด จากนั้นมันจะโหลดรูปภาพลงในพื้นผิว OpenGL โดยตรง จากนั้นจะลบข้อมูลในเครื่องที่ไม่จำเป็นทั้งหมด (จากคู่มือ OpenIL) GLuint ที่ส่งคืนคือตัวจัดการพื้นผิว OpenGL - person tbalazs; 01.12.2011
comment
มีอะไรอย่างอื่นนอกจาก ilut.h ฉันต้อง #include หรือไม่? เนื่องจาก ilutRenderer(ILUT_OPENGL) ใช้งานได้ แต่ไม่ได้ประกาศ iluOglLoadImage ในขอบเขตนี้ - person Rooster; 01.12.2011
comment
ฟังก์ชันการโหลดรูปภาพที่เหมาะสมคือ GLuint ilutGLLoadImage(ILstring FileName) ฉันคิดว่ามีการพิมพ์ผิดในบทช่วยสอน - person tbalazs; 01.12.2011
comment
คุณพูดถูกจริงๆ น่าเสียดายที่ฉันจะต้องถามคำถามคุณต่อไป :) หากคุณสามารถเสนอความช่วยเหลือเกี่ยวกับข้อผิดพลาดในการแบ่งส่วนของฉันด้วยฟังก์ชันนี้ โปรดดูที่ stackoverflow.com/ q/8351115/1042847. ขอบคุณ. - person Rooster; 02.12.2011