ID Artikel: 319061 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0 Bagaimana cara menyimpan .gif file dengan tabel warna baru dengan menggunakan Visual C#
Pada Halaman iniRINGKASAN CompuServe Graphics Interchange Format (GIF) adalah
dirancang dengan maksimum 256 warna yang disusun dalam tabel warna. Pada
membuat modifikasi umum .gif file gambar, Anda harus mengubah warna kustom
tabel. Namun, ketika System.Drawing suntingan Gambar objek dan kemudian diminta untuk menyimpan gambar dengan GIF encoder,
file .gif yang dihasilkan berisi tabel warna halftone. Untuk menyimpan Gambar dengan tabel warna kustom dengan menggunakan GIF encoder, Anda harus bekerja dengan salinan 256-warna Gambar yang System.Drawing tidak diubah. Memahami file .gif yang ditulis oleh System.Drawing dan GDI +File gambar .gif dapat mengekspresikan maksimum 256 warna. Karena warna adalah sumber daya yang langka di .gif file, mengoptimalkan mereka warna adalah tugas yang sering diminta. Mempengaruhi tabel warna dioptimalkan, Anda harus mampu mengatur setiap tabel warna kustom yang sewenang-wenang dalam .gif file.The System.Drawing namespace adalah terutama bungkus sekitar GDI +, oleh karena itu ini Artikel merujuk namespace sebagai GDI + kecuali perilaku yang khusus untuk System.Drawing namespace dibahas, dalam hal ini, istilah System.Drawing digunakan. Setelah GDI + memodifikasi Gambar dan kemudian menulis sebuah gambar ke file dengan menggunakan GIF encoder, GDI + menulis file dengan menggunakan halftone palet yang Gambar objek bit telah warna berkurang. GDI + Apakah warna konversi dari 32 bit per piksel (32 BPP) ketika menulis gambar ke file karena semua modifikasi untuk gambar yang dibuat dengan GDI + 32-BPP grafis mesin. Meskipun GDI + mendukung penciptaan Gambar dan Bitmaps berbagai piksel format dan oleh karena itu dapat memuat gambar .gif, penggunaan mesin grafis 32-BPP memerlukan konversi untuk 32 BPP ketika mereka diubah oleh GDI +. Namun, Gambar atau Bitmap Yaitu tidak diubah oleh GDI + mempertahankan format piksel yang asli dan dapat ditulis ke file menggunakan Simpan metode dengan encoder sesuai. Bentuk properti ini dasar untuk teknik yang dapat menyimpan Gambar untuk file .gif dengan warna kustom tabel. Menulis .gif File dengan tabel warna kustomAnda dapat menulis dimodifikasi Bitmap dengan GIF encoder dan tetap Bitmap Tabel warna utuh; oleh karena itu, Anda dapat menggunakan metode ini untuk menyimpan file .gif dengan tabel warna baru.Metode adalah untuk menyalin gambar data dari asli Gambar objek untuk sementara Bitmap objek. Sementara ini Bitmap diciptakan sebagai 8-BPP diindeks Bitmap, yang merupakan format piksel yang digunakan untuk menyimpan .gif file. The Bitmap Tabel warna diatur dengan menggunakan SetPalette metode, dan kemudian definisi gambar disalin ke sementara Bitmap. Setelah Anda membuat sementara Bitmap dengan definisi duplikat, Anda dapat menggunakan Save() metode untuk menyimpan dengan GIF encoder, yang melindungi 8-BPP Tabel warna. Untuk menuliskan citra .gif ke file dengan warna kustom tabel, ikuti langkah berikut:
Menggunakan contoh kodeKode contoh dalam artikel ini menunjukkan bagaimana untuk menggunakan Bitmap.Save untuk menulis file .gif dengan tabel warna kustom ukuran sewenang-wenang. Kode tidak dioptimalkan untuk kinerja karena tujuannya untuk demonstrasi. Kesempatan terbaik untuk optimasi adalah di piksel pengolahan loop. GetPixel abstraksi nyaman format piksel, tetapi sangat lambat. Contoh kode akan lebih cepat jika Anda menggunakan LockBits untuk mengakses format piksel yang secara langsung. Untuk meningkatkan kecepatan, lakukan tidak menggunakan GetPixel metode dan Warna kelas abstraksi. Untuk meningkatkan kinerja, menulis ulang grayscale konversi dengan menggunakan integer math, daripada floating point.The contoh fungsi mengambil empat parameter berikut:
Untuk membuat .gif file, Anda harus menginisialisasi 8 BPP Bitmap objek dengan definisi gambar yang ditulis untuk file. Dalam kode contoh, serangkaian tengah loop digunakan untuk warna mengkonversi gambar masuk pada dasarnya hitam dan putih TV warna ruang. Untuk keperluan demonstrasi, piksel gambar sumber yang diakses melalui The GetPixel() metode Bitmap objek yang adalah salinan dari gambar sumber. A Bitmap salinan dibuat karena Gambar kelas tidak melaksanakan GetPixel() metode. Anda dapat menggunakan teknik lain untuk mengakses piksel, seperti langsung akses ke piksel dengan menggunakan LockBits() metode atau interop dengan asli kode tidak dikelola dengan menggunakan Windows GDI DIB bagian. Ketika Anda menggunakan BitBlt fungsi untuk menyalin suatu bitmap dari Gdi + HDC ke bagian DIB GDI kontroler domain memori, GBitBlt fungsi menggunakan Pencocokan kemampuan GDI warna. Setelah Anda membuat Bitmap menyalin, menggunakan Simpan metode dengan ImageFormat.Gif objek untuk menulis bitmap ke target file. GIF file dengan kurang dari 256 warnaGIF codec dalam GDI + versi 1.0 encode hanya GDI + Gambar yang 8 BPP. Lainnya Gambar format diubah sebelum encoding. Kode ini menggunakan 8-BPP Bitmap format untuk menulis file .gif yang memiliki kurang dari 256 warna karena GIF codec mengakui 8-BPP Bitmap objek yang berisi lebih dari 256 warna oleh Palette.Count properti.Untuk informasi lebih lanjut tentang GIF codec, Lihat "Referensi"bagian dari Artikel ini. Sayangnya, ColorPalette kelas System.Drawing namespace dalam.NET Framework tidak dapat instantiated independen Bitmap objek. Ini adalah pembatasan yang hanya System.Drawing.bitmap kelas membebankan di.NET Framework; Namun, untuk menggunakan pendekatan pada artikel ini, Bitmap objek harus baru ColorPalette objek yang berisi warna lebih sedikit daripada default 256 ColorPalette. Untuk mencapai hal ini, kode contoh mendefinisikan fungsi bernama GetColorPalette. Fungsi ini menciptakan sementara Bitmap objek yang memiliki kedalaman warna dekat dengan jumlah diminta warna. Fungsi kemudian referensi Palet properti dan kembali ke pemanggil. Ini menciptakan baru ColorPalette dengan salah satu dari beberapa warna mungkin penting: 256 warna, warna 16, atau dua warna (monokrom). Meskipun Anda dapat membuat tabel warna dalam file .gif yang lebih kecil dari 256 warna, warna tabel dibatasi untuk ukuran yang kekuatan dua. Ketika Anda membatasi ukuran tabel warna untuk kekuatan dua, Anda meminimalkan ruang kosong. Tabel warna yang dihasilkan dalam contoh ini adalah 8 warna (2 x 2 x 2). Dengan kode contoh, .gif file akan dibuat dengan warna tabel warna 16 karena itulah yang terkecil PixelFormat untuk Bitmap yang mengakomodasi enam warna. Kode dalam pengolahan loop yang salinan gambar pixel definisi untuk 8-BPP Bitmap memperhitungkan ukuran pelat ketika kode menghitung Sebuah pixel indeks nilai. GIF codec membatasi ukuran pelat dan membatasi definisi gambar untuk nilai-nilai indeks yang kompatibel dengan palet ukuran (yaitu potensi GIF tabel warna), dan oleh karena itu dapat membuat file .gif dengan kurang dari 256 warna. GIF transparansiDalam kode contoh, ColorPalette penciptaan rutin set pertama masuk menjadi GIF transparan warna untuk menunjukkan penggunaan fitur transparansi. Kode ini dilakukan dengan pengaturan komponen Alpha Warna masuk ke NOL. Kode contoh dalam artikel ini untuk demonstrasi tujuan hanya, karena warna transparansi yang sewenang-wenang pilihan dan mungkin memiliki hasil yang tidak diharapkan yang bergantung sepenuhnya pada sumber Gambar.GIF encoder mengidentifikasi warna pertama di ColorPalette yang memiliki Alpha nilai nol sebagai warna transparan. Ini berarti bahwa warna transparan tidak harus entri pertama di ColorPalette. Ini dapat menjadi salah satu mungkin 256 warna dalam palet, pada kondisi yang berisi semua entri sebelumnya Alpha komponen dengan nilai-nilai bukan nol. Setiap entri kemudian dengan Alpha komponen nilai nol diabaikan. Semua entri yang bukan nol Alpha komponen dianggap buram. GIF/LZW lisensi masalahMicrosoft telah memperoleh lisensi dari Unisys untuk menggunakan .gif file format dan teknologi LZW lainnya yang dilindungi oleh milik Unisys AS dan asing paten di sejumlah produk Microsoft. Namun, lisensi ini Apakah tidak sampai meluas ke pengembang pihak ketiga yang menggunakan Microsoft pengembangan produk atau toolkit untuk mengembangkan aplikasi. Sebagai pengembang pihak ketiga, Anda perlu menentukan apakah Anda harus memperoleh izin dari Unisys menggunakan .gif format atau teknologi LZW.Untuk tambahan informasi tentang LZW lisensi dan GIF, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft: 193543
(http://support.microsoft.com/kb/193543/EN-US/
)
INFO: Unisys GIF dan informasi lisensi teknologi LZW Contoh kodeTentang contoh kodeMicrosoft menyediakan pemrogaman hanya untuk ilustrasi, tanpa garansi baik tersurat maupun tersirat, termasuk, namun tidak terbatas pada, jaminan tersirat mengenai keadaan yang dapat diperjualbelikan dan/atau kesesuaian untuk tujuan tertentu. Artikel ini mengasumsikan bahwa Anda sudah familiar dengan bahasa pemrograman yang ditunjukkan dan alat-alat yang digunakan untuk membuat dan memperbaiki prosedur. Profesional dukungan Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu, tetapi mereka tidak akan mengubah contoh tersebut untuk menyediakan fungsionalitas tambahan atau membuat prosedur untuk memenuhi kebutuhan spesifik Anda.Jika Anda memiliki terbatas pengalaman pemrograman, Anda mungkin ingin menghubungi Microsoft Certified Partner atau Microsoft Advisory Services. Untuk informasi lebih lanjut, kunjungi situs Web Microsoft ini: Microsoft Certified Partner- https://Partner.Microsoft.com/global/30000104 (https://partner.microsoft.com/global/30000104) Microsoft Advisory Services- http://support.Microsoft.com/GP/advisoryservice (http://support.microsoft.com/gp/advisoryservice) Untuk informasi lebih lanjut tentang opsi dukungan yang tersedia dan tentang cara menghubungi Microsoft, kunjungi Website Microsoft berikut:http://support.Microsoft.com/default.aspx?scid=Fh;EN-US;CNTACTMS (http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS) Pemecahan MasalahKetika Anda menggunakan kode ini untuk menimpa file yang ada, Anda mungkin melihat apa yang tampaknya menjadi masalah dengan ukuran file yang dihasilkan. Hal ini terjadi karena dari bug di GDIPlus versi 1.0 yang tidak memotong file. Untuk informasi lebih lanjut tentang ukuran file gambar, lihat "Referensi" bagian.The contoh kode juga menggunakan kata kunci tidak aman. Hal ini karena kode yang bergerak definisi piksel dari sumber Bitmap ke tujuan Bitmap menggunakan pointer ke byte nilai-nilai. Nyata petunjuk hanya dapat digunakan dalam kode yang ditandai tidak aman dan yang dikompilasi dengan / tidak aman kompiler pilihan. Kode yang ditulis dengan cara ini memiliki keamanan impliciations. Khususnya, kode tersebut dikelola mungkin harus meminta izin dan mungkin gagal untuk menjalankan jika ianya tidak terpercaya. REFERENSIUntuk
informasi tambahan tentang GIF codec piksel format, klik nomor artikel
di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft: 318343
(http://support.microsoft.com/kb/318343/EN-US/
)
INFO: GDI + GIF file yang disimpan menggunakan 8-BPP Format Untuk
informasi tambahan tentang ukuran file gambar, klik nomor artikel di bawah ini
untuk melihat artikel di dalam Basis Pengetahuan Microsoft: 312119
(http://support.microsoft.com/kb/312119/EN-US/
)
PRB: Simpan metode Bitmap kelas tidak memotong ukuran File Untuk informasi tambahan tentang teknik ini menggunakan Microsoft Visual C++, klik nomor artikel di bawah ini untuk melihat artikel pada Basis Pengetahuan Microsoft: 315780
(http://support.microsoft.com/kb/315780/EN-US/
)
HOWTO: Menyimpan GIF dengan tabel warna baru dengan menggunakan GDI + Daftar KataBPP bit per pixel - jumlah bit yang digunakan untuk mewakili nilai warna setiap pixel dalam sebuah gambar digital; menjelaskan tata letak fisik definisi warna setiap pixel dalam sebuah gambar. Umum dan umum direferensikan piksel format termasuk 32 BPP, 24 BPP, 16 BPP, 8 BPP, 4 BPP, 1 BPP. 8 BPPPiksel format gambar yang dinyatakan sebagai delapan bit yang terkandung dalam satu byte. Byte nilai digunakan sebagai indeks ke tabel warna yang berisi sebenarnya merah hijau biru (RGB) warna definisi. Karena indeks adalah satu byte dalam ukuran, tabel warna terbatas pada 256 warna. GIFGraphics Interchange Format - format file gambar streamable yang dibuat oleh CompuServe. RGBMerah, hijau dan biru - masing-masing biasanya dinyatakan sebagai byte, dan menghasilkan warna 3-byte triplet. Berlaku bagi:
Penerjemahan MesinPENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah. Klik disini untuk melihat versi Inggris dari artikel ini:319061
(http://support.microsoft.com/kb/319061/en-us/
)
| Sumber Lain Situs Pendukung Lain
KomunitasCari Bantuan SekarangTerjemahan Artikel
|






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


Kembali ke atas
