public bool Compare(ImageData arg) { if (ContentType != arg.ContentType) return false; if (Image.GetLongLength(0) != arg.Image.GetLongLength(0)) return false; // Compare the arrays byte by byte long length = Image.GetLongLength(0); byte[] image1 = Image; byte[] image2 = arg.Image; for (long n = 0; n < length; n++) if (image1[n] != image2[n]) return false; return true; }
// General function for handling images that tries to use an existing image if they are the same private static ImageData ManageImageCopy(ImagePart oldImage, OpenXmlPart newContentPart, List<ImageData> images) { ImageData oldImageData = new ImageData(newContentPart, oldImage); foreach (ImageData item in images) { if (newContentPart != item.ContentPart) continue; if (item.Compare(oldImageData)) return item; } images.Add(oldImageData); return oldImageData; }