หมายเลขบทความ (Article ID): 319061 - รีวิวครั้งสุดท้าย: 13 มกราคม 2554 - Revision: 5.0 วิธีการบันทึกแฟ้มเป็น.gif กับตารางสีใหม่ โดยใช้ Visual c#
เนื้อหาบนหน้านี้สรุปการ CompuServe กราฟิก Interchange รูปแบบ (GIF) จะได้รับการออกแบบได้สูงสุด 256 สีที่มีการจัดเรียงในตารางสี เพื่อทำการแก้ไขทั่วไปแฟ้มรูปแบบ.gif คุณต้องเปลี่ยนตารางสีที่กำหนดเอง อย่างไรก็ตาม เมื่อSystem.Drawingการแก้ไขข้อรูปภาพวัตถุ และขอแล้วบันทึกรูปที่ มีการเข้ารหัสแฟ้ม GIF แฟ้ม.gif ที่เป็นผลลัพธ์ประกอบด้วยตารางสี halftone เมื่อต้องการบันทึกเป็นรูปภาพมีตารางสีที่กำหนดเองโดยใช้ตัวเข้ารหัสแฟ้ม GIF คุณต้องทำกับสำเนา 256 สีรูปภาพที่System.Drawingยังไม่ถูกปรับเปลี่ยน การทำความเข้าใจเกี่ยวกับแฟ้ม.gif ที่กำลังเขียนโดยSystem.DrawingและGDI+แฟ้มรูป.gif สามารถแสดงได้สูงสุด 256 สี เนื่องจากสี ทรัพยากร scarce ในแฟ้ม.gif, optimizing สีเหล่านั้นเป็นงานที่ร้องขอโดยทั่วไป เมื่อต้องการมีผลกับตารางมีสี optimized คุณต้องสามารถกำหนดตารางเองสีที่กำหนดเองใด ๆ ในแฟ้ม.gifกระบวนการSystem.Drawingnamespace มี wrapper รอบ ๆ GDI + หลัก ดังนั้น บทความนี้อ้างถึง namespace ที่เป็น GDI + เว้นแต่ว่าลักษณะการทำงานที่มีเฉพาะSystem.Drawingnamespace มีสนทนา ในกรณีซึ่ง ระยะเวลาSystem.Drawingมีใช้ หลังจากที่ GDI + ปรับเปลี่ยนเป็นรูปภาพและมีการเขียนแล้วเกิดรูปเป็นแฟ้มโดยใช้ตัวเข้า GIF รหัส GDI + เขียนแฟ้ม โดยใช้สีแบบ halftone ที่นั้นรูปภาพบิตของวัตถุได้สีที่ลดลง GDI + ไม่มีการแปลงสีจากรูปแบบ 32 บิตต่อพิกเซล (32 BPP) เมื่อคุณเขียนรูปลงในแฟ้มได้เนื่องจากมีการจัดทำการปรับเปลี่ยนรูปแบบทั้งหมด ด้วย GDI + BPP 32 โปรแกรมกราฟิก แม้ว่า GDI + สนับสนุนการสร้างรูปภาพและบิตแมปรูปแบบพิกเซลและสามารถแตกต่างกัน ดังนั้นการโหลดรูป.gif การใช้โปรแกรมการกราฟิก 32-BPP necessitates แปลง BPP 32 เมื่อปรับเปลี่ยน โดย GDI + อย่างไรก็ตาม การรูปภาพหรือบิตแมปนั่นคือไม่ปรับเปลี่ยนโดย GDI + retains พิกเซลที่จัดรูปแบบของต้นฉบับ และเขียนได้เพื่อใช้กับแฟ้มนั้นบันทึกวิธีการ ด้วยการเข้ารหัสที่เหมาะสม คุณสมบัตินี้เป็นข้อมูลพื้นฐานสำหรับเทคนิคหนึ่งที่สามารถบันทึกเป็นรูปภาพไปยังแฟ้ม.gif กับตารางสีที่กำหนดเอง การเขียน.gif แฟ้มกับตารางสีแบบกำหนดเองคุณสามารถเขียนข้อ unmodifiedบิตแมปมีการเข้ารหัสแฟ้ม GIF และเก็บไว้บิตแมปตารางสี intact ดังนั้นคุณสามารถใช้วิธีนี้จะบันทึกแฟ้ม.gif กับตารางสีใหม่ได้วิธีการมีการ คัดลอกข้อมูลรูปภาพต้นฉบับรูปภาพวัตถุแบบ temporaryบิตแมปวัตถุ นี้ชั่วคราวบิตแมปมีสร้างเป็นการ 8-BPP จัดทำดัชนีไว้บิตแมปซึ่งเป็นรูปแบบพิกเซลที่ใช้ในการบันทึกแฟ้มเป็น.gif กระบวนการบิตแมปตารางสีถูกตั้งค่า โดยใช้การSetPaletteเมธอด และคำนิยามรูปถูกคัดลอกไปยัง temporaryบิตแมป. หลังจากที่คุณสร้าง temporaryบิตแมปมีคำนิยามที่ซ้ำกัน คุณสามารถใช้การSave()วิธีการบันทึก ด้วยการเข้ารหัสแฟ้ม GIF ซึ่งรักษาการเพื่อใช้ตารางสี BPP 8 เขียนเป็น.gif รูปไปยังแฟ้มที่มีตารางสีที่กำหนดเอง ดำเนินการดังต่อไปนี้:
การใช้รหัสตัวอย่างตัวอย่างรหัสในบทความนี้อธิบายวิธีการใช้Bitmap.Saveเมื่อต้องการเขียนแฟ้ม.gif กับตารางสีที่กำหนดเองของขนาดที่โปรแกรม รับการออกรหัสคือไม่แบบสำหรับประสิทธิภาพการทำงานได้เนื่องจากวัตถุประสงค์ของที่อยู่สำหรับการสาธิตเท่านั้น โอกาสที่ดีที่สุดสำหรับการปรับให้เหมาะสมเป็นพิกเซลที่ loops การประมวลผลGetPixelabstraction ที่สะดวกของรูปแบบพิกเซล แต่มันอยู่ remarkably ช้า ตัวอย่างรหัสจะเร็วมากถ้าคุณใช้LockBitsการเข้าถึงแบบพิกเซลโดยตรง เมื่อต้องการเพิ่มความเร็ว ไม่ใช้การGetPixelวิธีการ และสีคลา abstraction การปรับปรุงประสิทธิภาพ เขียนแปลง grayscale โดยใช้จำนวนเต็มคณิตศาสตร์ มากกว่าลอยจุดฟังก์ชันตัวอย่างใช้พารามิเตอร์ทั้งสี่ต่อไปนี้:
เมื่อต้องการสร้างแฟ้ม.gif คุณต้องเริ่มต้น BPP 8บิตแมปวัตถุที่ มีคำนิยามรูปที่จะสามารถเขียนไปยังแฟ้ม ในตัวอย่างรหัส ชุดงานกลาง loops ถูกใช้ในการแปลงสีรูปขาเข้าไปเป็น essentially แบบขาวดำโทรทัศน์พื้นที่สี เข้าถึงสำหรับวัตถุประสงค์ในการสาธิต พิกเซลของรูปภาพต้นฉบับจะได้โดยใช้ความของGetPixel()วิธีการบิตแมปวัตถุที่มีสำเนาของรูปต้นฉบับ aบิตแมปทำการคัดลอกเนื่องจากการรูปภาพไม่มีใช้คลาGetPixel()วิธีการ คุณสามารถใช้เทคนิคอื่น ๆ พิกเซล เช่นการเข้าถึงโดยตรงพิกเซลโดยใช้การเข้าถึงLockBits()เมธอดหรือ interop ด้วยรหัสที่ไม่มีการจัดการมาตรฐานโดยการใช้ส่วน DIB GDI ของ windows. เมื่อคุณใช้การBitBltฟังก์ชันเพื่อคัดลอกบิตแมปจากแบบ HDC Gdi + GDI DIB Section ตัวควบคุมโดเมนของหน่วยความจำGBitBltฟังก์ชันใช้สี abilities ของ GDI ที่ตรงกัน หลังจากที่คุณสร้างการบิตแมปคัดลอก ใช้บันทึกวิธีการด้วยการImageFormat.Gifวัตถุการเขียนบิตแมปนั้นไปยังแฟ้มเป้าหมาย แฟ้ม gif ที่ มีน้อยกว่า 256 สีตัวแปลงสัญญาณ GIF ใน GDI + รุ่น 1.0 encodes เฉพาะ GDI +รูปภาพที่อยู่การ BPP 8 อื่น ๆ ทั้งหมดรูปภาพรูปแบบจะถูกแปลงก่อนที่จะเข้ารหัส รหัสนี้ใช้ BPP 8บิตแมปรูปแบบการเขียนแฟ้ม.gif ที่มีน้อยกว่า 256 สีเนื่องจากตัวแปลงสัญญาณ GIF รู้จัก BPP 8บิตแมปวัตถุที่ประกอบด้วยน้อยกว่า 256 สีตามPalette.Countคุณสมบัติสำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวแปลงสัญญาณ GIF ให้ดู "อ้างอิง:"ส่วนของบทความนี้ แต่ColorPaletteคลาสของSystem.Drawingnamespace ใน.NET Framework ไม่สามารถถูก instantiated ขึ้นอยู่กับบิตแมปวัตถุ ซึ่งจะจำกัดนั่นเท่านั้นSystem.Drawing.Bitmapคลา imposes ใน.NET Framework อย่างไรก็ตาม การใช้วิธีการในบทความนี้บิตแมปวัตถุต้องมีใหม่ColorPaletteวัตถุที่ประกอบด้วยสีที่น้อยกว่าค่าเริ่มต้น 256ColorPalette. เพื่อให้ได้ ตัวอย่างรหัสกำหนดชื่อฟังก์ชันGetColorPalette. ฟังก์ชันนี้สร้าง temporary เป็นบิตแมปวัตถุที่มีความละเอียดของสีใกล้กับตัวเลขที่ถูกต้องที่ร้องขอของสี ฟังก์ชันการอ้างอิงแล้วนี้จานสีคุณสมบัติ และกลับไปยังผู้เรียก ซึ่งสร้างใหม่ColorPaletteด้วยสีที่เป็นไปได้หลายอย่างใดอย่างหนึ่งนับ: 256 สี สี 16 หรือสีที่สอง (ขาวดำ) แม้ว่าคุณสามารถสร้างตารางของสีในแฟ้ม.gif ที่มีขนาดเล็กกว่า 256 สี ตารางสีมีขนาดที่มีการใช้พลังงานของสองเพียงอย่างเดียว เมื่อคุณจำกัดขนาดตารางสีเมื่อต้องการพลังงานของสอง ลดเนื้อที่ที่สิ้นเปลือง ตารางสีได้ในตัวอย่างนี้เป็นสีที่ 8 (2 x 2 x 2) ด้วยตัวอย่างรหัส แฟ้ม.gif จะถูกสร้างพร้อมกับตารางสี 16 สีได้เนื่องจากที่น้อยที่สุดPixelFormatสำหรับคำบิตแมปสีที่ accomodates หก รหัสในการวนรอบของกระบวนการที่คัดลอกคำนิยามของพิกเซลของรูปภาพเพื่อ BPP 8บิตแมปจะเป็นบัญชีขนาดของชุดแบบสีเมื่อรหัสค่าดัชนีของพิกเซลที่คำนวณ ตัวแปลงสัญญาณ GIF จำกัดขนาดของชุดแบบสี และจำกัดคำนิยามรูปเป็นค่าดัชนีที่เข้ากันได้กับขนาดของชุดแบบสี (นั่นคือ อาจเกิดขึ้น GIF สีตาราง), และสามารถจึงสร้างแฟ้ม.gif ที่ มีน้อยกว่า 256 สี โปร่งใส gifในตัวอย่างรหัส การColorPaletteขั้นตอนการสร้างการตั้งค่าจากรายการแรกเป็น สีโปร่งใส GIF เพื่อแสดงให้เห็นถึงการใช้คุณลักษณะความโปร่งใส รหัสไม่นี้ โดยการตั้งค่าคอมโพเนนต์ Alpha ของสีรายการเป็นศูนย์ ตัวอย่างรหัสในบทความนี้มีไว้สำหรับการสาธิตเท่านั้น ดังนั้น สีโปร่งใสมีทางเลือกเอง และอาจมีผลลัพธ์ที่ไม่คาดคิดที่ขึ้นกับแหล่งที่มาทั้งหมดรูปภาพ.สีแรกในการระบุตัวเข้ารหัสแฟ้ม GIFColorPaletteที่มีค่า Alpha ของศูนย์เป็นสีโปร่งใส ซึ่งหมายความ ว่า สีโปร่งใสไม่มีเป็น รายการแรกในการColorPalette. คุณสามารถเป็นหนึ่งสามารถ 256 สีของชุดแบบสี on condition ว่ารายการ preceeding ทั้งหมดที่ประกอบด้วยคอมโพเนนต์ Alpha ด้วยค่าที่ไม่ใช่ศูนย์ รายการใด ๆ ในภายหลัง โดยค่าคอมโพเนนต์ Alpha ของศูนย์จะถูกละเว้น รายการทั้งหมดที่มีคอมโพเนนต์ของ Alpha ใช่ศูนย์จะพิจารณา opaque แฟ้ม GIF/LZW ที่อนุญาตให้ใช้สิทธิ์ของประเด็นMicrosoft ยังได้รับใบอนุญาตจาก Unisys ใช้รูปแบบแฟ้ม.gif และเทคโนโลยีอื่น ๆ LZW ที่ครอบคลุม โดย Unisys เจ้าของสหรัฐอเมริกาและสิทธิบัตรต่างประเทศในหมายเลขผลิตภัณฑ์ของ Microsoft อย่างไรก็ตาม สิทธิ์การใช้งานนี้ไม่ขยายให้นักพัฒนาอื่น ๆ ที่ใช้ Microsoft พัฒนาผลิตภัณฑ์หรือ toolkits พัฒนาแอปพลิเคชัน เป็นนักพัฒนาของบริษัทอื่น คุณจำเป็นต้องตรวจสอบว่า คุณต้องขอรับใบอนุญาตจาก Unisys ใช้รูปแบบ.gif หรือเทคโนโลยี LZWสำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์การใช้งาน LZW และ GIF คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft: 193543
(http://support.microsoft.com/kb/193543/EN-US/
)
ข้อมูล: Unisys GIF และข้อมูลสิทธิ์การใช้งานเทคโนโลยี LZW ตัวอย่างรหัสเกี่ยวกับรหัสตัวอย่างMicrosoft ให้ตัวอย่างการเขียนโปรแกรมสำหรับภาพเท่านั้น โดยไม่มีการรับประกันแสดง หรือ อื่น รวม แต่ไม่จำกัดเพียงการ การรับประกันโดยนัยของสามารถเชิงพาณิชย์และ/หรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ บทความนี้อนุมานว่า คุณไม่คุ้นเคยกับภาษาการเขียนโปรแกรมที่มีการแสดงและเครื่องมือที่ใช้ในการสร้าง และขั้นตอนการตรวจแก้จุดบกพร่อง ผู้เชี่ยวชาญฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายฟังก์ชันการทำงานของกระบวนการเฉพาะ แต่พวกเขาจะปรับเปลี่ยนตัวอย่างเหล่านี้เพื่อให้มีเพิ่มฟังก์ชันการทำงาน หรือสร้างกระบวนการตามที่คุณต้องการไม่ถ้าคุณได้รับการจำกัดประสบการณ์ในการเขียนโปรแกรม คุณอาจต้องติดต่อคู่ค้ารับรองของ Microsoft หรือคำแนะนำบริการของ Microsoft สำหรับข้อมูลเพิ่มเติม โปรดไปที่เว็บไซต์ของ Microsoft เหล่านี้: Microsoft ที่คู่ค้า - รับรองhttps://partner.microsoft.com/global/30000104 (https://partner.microsoft.com/global/30000104) บริการคำแนะนำของ Microsoft-http://support.microsoft.com/gp/advisoryservice (http://support.microsoft.com/gp/advisoryservice) สำหรับข้อมูลเพิ่มเติม เกี่ยวกับตัวเลือกการสนับสนุนที่มีอยู่ และ เกี่ยวกับวิธีการติดต่อ Microsoft แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS (http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS) การแก้ไขปัญหาเมื่อคุณใช้รหัสนี้จะเขียนทับแฟ้มมีอยู่ คุณอาจเห็นสิ่งที่ดูเหมือนมีปัญหากับขนาดของแฟ้มที่เป็นผลลัพธ์ ปัญหานี้เกิดขึ้นเนื่องจากการเป็นปัญหาที่เกิดขึ้นใน GDIPlus รุ่น 1.0 ที่ตัดทอนแฟ้มไม่ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขนาดแฟ้มของรูป ให้ดู"การอ้างอิง"ส่วนตัวอย่างรหัสที่ยังใช้คำสำคัญไม่ปลอดภัย. จะทำนี้ได้เนื่องจากรหัสที่ย้ายข้อกำหนดของพิกเซลจากแหล่งบิตแมปไปยังปลายทางบิตแมป เป็นตัวชี้ไปที่ใช้ไบต์ค่าต่างๆ: ตัวชี้จริงสามารถใช้ได้เฉพาะในโค้ดที่ถูกทำเครื่องหมายไม่ปลอดภัย และการคอมไพล์ด้วย/ ไม่ปลอดภัยตัวเลือกของคอมไพเลอร์ รหัสใด ๆ ที่เขียนด้วยวิธีนี้มีการรักษาความปลอดภัย impliciations โดยเฉพาะ เช่นรหัสที่ได้รับการจัดการอาจมีการร้องขอสิทธิ์ และอาจล้มเหลวให้ทำงานหากคุณไม่เชื่อถือได้ ข้อมูลอ้างอิงสำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบพิกเซลของตัวแปลงสัญญาณ GIF คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft: 318343
(http://support.microsoft.com/kb/318343/EN-US/
)
ข้อมูล: แฟ้ม GIF GDI + ถูกบันทึกไว้โดยใช้การจัดรูปแบบ BPP 8 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขนาดแฟ้มของรูป คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:312119
(http://support.microsoft.com/kb/312119/EN-US/
)
PRB: วิธีการบันทึกของคลาบิตแมปไม่ตัดขนาดของแฟ้ม สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเทคนิคนี้ใช้ Microsoft ในการ Visual c ++ คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft: 315780
(http://support.microsoft.com/kb/315780/EN-US/
)
HOWTO: บันทึกแฟ้ม GIF ที่ มีสีเป็นตารางใหม่ โดยใช้ GDI + อภิธานศัพท์bpp บิตต่อพิกเซล - จำนวนบิตใช้เพื่อแสดงค่าสีของแต่ละพิกเซลในรูปแบบ digitized อธิบายโครงร่างทางกายภาพของพิกเซลแต่ละคำจำกัดความของสีในรูปภาพ รูปแบบพิกเซลที่พบโดยทั่วไป และการอ้างอิง generically รวม BPP 32, 24 BPP, BPP 16, BPP 8, BPP 4, BPP 1 8 bppรูปพิกเซลรูปที่แสดงเป็น 8 บิตที่มีอยู่ในหนึ่งไบต์ The byte value is used as an index into a color table that contains the actual red-green-blue (RGB) color definitions. Because the index is one byte in size, the color table is limited to 256 colors. GIFGraphics Interchange Format - a streamable image file format that was created by CompuServe. RGBRed, green and blue - each commonly expressed as a byte, and resulting in a color 3-byte triplet. ใช้กับ
แปลโดยคอมพิวเตอร์ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:319061
(http://support.microsoft.com/kb/319061/en-us/
)
| ทรัพยากรอื่นๆ ไซต์การสนับสนุนอื่นๆ
ชุมชนรับความช่วยเหลือเดี๋ยวนี้การแปลบทความ
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


กลับไปด้านบน
