それぞれ約 2500 色を置き換えたい 4k 画像 (.png、3840p*2160p) がいくつかあります。
2500 個の現在の色の Color[] 配列と、常に異なる 2500 個の新しい色を持つ配列があります。
現在、System.Drawing.Imaging.ColorMap 配列があり、2500 個の単一 ColorMap オブジェクトをプッシュし、それぞれの OldColor および NewColor プロパティを他の配列の各値に設定しています。
次に、次のことができます。
[...]
ImageAttributes imageAttributes = new ImageAttributes();
imageAttributes.SetRemapTable(colorMapArray);
Rectangle rectangle = new Rectangle(0, 0, myImage.Width, myImage.Height);
Graphics graphics = Graphics.FromImage(myImage);
graphics.DrawImage(myImage, rectangle, 0, 0, myImage.Width, myImage.Height, GraphicsUnit.Pixel, imageAttributes);
myImage.Save("myImageWithReplacedColors.png");
これは技術的には機能し、すべての色を新しい値に置き換えますが、非常に遅いです。(数秒かかります)
このプロセスをスピードアップするために必要なオプションは何ですか? ..または、同じ結果を得る他の方法はありますか? 私は数日間探していましたが、実際には何も見つかりませんでした
それが役立つ場合は、4k 画像と、置き換える必要がある現在の色を含む配列は常に同じです。したがって、たとえばバイト配列(?)として特別に保存できます