6
6
using SixLabors . ImageSharp . Formats . Tiff . Constants ;
7
7
using SixLabors . ImageSharp . Metadata ;
8
8
using SixLabors . ImageSharp . Metadata . Profiles . Exif ;
9
+ using SixLabors . ImageSharp . Metadata . Profiles . Icc ;
10
+ using SixLabors . ImageSharp . Metadata . Profiles . Iptc ;
9
11
using SixLabors . ImageSharp . Metadata . Profiles . Xmp ;
10
- using SixLabors . ImageSharp . PixelFormats ;
11
12
12
13
namespace SixLabors . ImageSharp . Formats . Tiff ;
13
14
@@ -76,7 +77,6 @@ public void Process(Image image, bool skipMetadata)
76
77
}
77
78
}
78
79
79
-
80
80
public void Process ( ImageFrame frame , bool skipMetadata )
81
81
{
82
82
this . ProcessProfiles ( frame . Metadata , skipMetadata ) ;
@@ -171,79 +171,30 @@ private void ProcessMetadata(ExifProfile exifProfile)
171
171
172
172
private void ProcessProfiles ( ImageMetadata imageMetadata , bool skipMetadata )
173
173
{
174
- if ( ! skipMetadata && ( imageMetadata . ExifProfile != null && imageMetadata . ExifProfile . Parts != ExifParts . None ) )
175
- {
176
- foreach ( IExifValue entry in imageMetadata . ExifProfile . Values )
177
- {
178
- if ( ! this . Collector . Entries . Exists ( t => t . Tag == entry . Tag ) && entry . GetValue ( ) != null )
179
- {
180
- ExifParts entryPart = ExifTags . GetPart ( entry . Tag ) ;
181
- if ( entryPart != ExifParts . None && imageMetadata . ExifProfile . Parts . HasFlag ( entryPart ) )
182
- {
183
- this . Collector . AddOrReplace ( entry . DeepClone ( ) ) ;
184
- }
185
- }
186
- }
187
- }
188
- else
189
- {
190
- imageMetadata . ExifProfile ? . RemoveValue ( ExifTag . SubIFDOffset ) ;
191
- }
192
-
193
- if ( ! skipMetadata && imageMetadata . IptcProfile != null )
194
- {
195
- imageMetadata . IptcProfile . UpdateData ( ) ;
196
- ExifByteArray iptc = new ( ExifTagValue . IPTC , ExifDataType . Byte )
197
- {
198
- Value = imageMetadata . IptcProfile . Data
199
- } ;
200
-
201
- this . Collector . AddOrReplace ( iptc ) ;
202
- }
203
- else
204
- {
205
- imageMetadata . ExifProfile ? . RemoveValue ( ExifTag . IPTC ) ;
206
- }
207
-
208
- if ( imageMetadata . IccProfile != null )
209
- {
210
- ExifByteArray icc = new ( ExifTagValue . IccProfile , ExifDataType . Undefined )
211
- {
212
- Value = imageMetadata . IccProfile . ToByteArray ( )
213
- } ;
214
-
215
- this . Collector . AddOrReplace ( icc ) ;
216
- }
217
- else
218
- {
219
- imageMetadata . ExifProfile ? . RemoveValue ( ExifTag . IccProfile ) ;
220
- }
221
-
222
- if ( ! skipMetadata && imageMetadata . XmpProfile != null )
223
- {
224
- ExifByteArray xmp = new ( ExifTagValue . XMP , ExifDataType . Byte )
225
- {
226
- Value = imageMetadata . XmpProfile . Data
227
- } ;
228
-
229
- this . Collector . AddOrReplace ( xmp ) ;
230
- }
231
- else
232
- {
233
- imageMetadata . ExifProfile ? . RemoveValue ( ExifTag . XMP ) ;
234
- }
174
+ this . ProcessExifProfile ( skipMetadata , imageMetadata . ExifProfile ) ;
175
+ this . ProcessIptcProfile ( skipMetadata , imageMetadata . IptcProfile , imageMetadata . ExifProfile ) ;
176
+ this . ProcessIccProfile ( imageMetadata . IccProfile , imageMetadata . ExifProfile ) ;
177
+ this . ProcessXmpProfile ( skipMetadata , imageMetadata . XmpProfile , imageMetadata . ExifProfile ) ;
235
178
}
236
179
237
180
private void ProcessProfiles ( ImageFrameMetadata frameMetadata , bool skipMetadata )
238
181
{
239
- if ( ! skipMetadata && ( frameMetadata . ExifProfile != null && frameMetadata . ExifProfile . Parts != ExifParts . None ) )
182
+ this . ProcessExifProfile ( skipMetadata , frameMetadata . ExifProfile ) ;
183
+ this . ProcessIptcProfile ( skipMetadata , frameMetadata . IptcProfile , frameMetadata . ExifProfile ) ;
184
+ this . ProcessIccProfile ( frameMetadata . IccProfile , frameMetadata . ExifProfile ) ;
185
+ this . ProcessXmpProfile ( skipMetadata , frameMetadata . XmpProfile , frameMetadata . ExifProfile ) ;
186
+ }
187
+
188
+ private void ProcessExifProfile ( bool skipMetadata , ExifProfile exifProfile )
189
+ {
190
+ if ( ! skipMetadata && ( exifProfile != null && exifProfile . Parts != ExifParts . None ) )
240
191
{
241
- foreach ( IExifValue entry in frameMetadata . ExifProfile . Values )
192
+ foreach ( IExifValue entry in exifProfile . Values )
242
193
{
243
194
if ( ! this . Collector . Entries . Exists ( t => t . Tag == entry . Tag ) && entry . GetValue ( ) != null )
244
195
{
245
196
ExifParts entryPart = ExifTags . GetPart ( entry . Tag ) ;
246
- if ( entryPart != ExifParts . None && frameMetadata . ExifProfile . Parts . HasFlag ( entryPart ) )
197
+ if ( entryPart != ExifParts . None && exifProfile . Parts . HasFlag ( entryPart ) )
247
198
{
248
199
this . Collector . AddOrReplace ( entry . DeepClone ( ) ) ;
249
200
}
@@ -252,50 +203,59 @@ private void ProcessProfiles(ImageFrameMetadata frameMetadata, bool skipMetadata
252
203
}
253
204
else
254
205
{
255
- frameMetadata . ExifProfile ? . RemoveValue ( ExifTag . SubIFDOffset ) ;
206
+ exifProfile ? . RemoveValue ( ExifTag . SubIFDOffset ) ;
256
207
}
208
+ }
257
209
258
- if ( ! skipMetadata && frameMetadata . IptcProfile != null )
210
+ private void ProcessIptcProfile ( bool skipMetadata , IptcProfile iptcProfile , ExifProfile exifProfile )
211
+ {
212
+ if ( ! skipMetadata && iptcProfile != null )
259
213
{
260
- frameMetadata . IptcProfile . UpdateData ( ) ;
214
+ iptcProfile . UpdateData ( ) ;
261
215
ExifByteArray iptc = new ( ExifTagValue . IPTC , ExifDataType . Byte )
262
216
{
263
- Value = frameMetadata . IptcProfile . Data
217
+ Value = iptcProfile . Data
264
218
} ;
265
219
266
220
this . Collector . AddOrReplace ( iptc ) ;
267
221
}
268
222
else
269
223
{
270
- frameMetadata . ExifProfile ? . RemoveValue ( ExifTag . IPTC ) ;
224
+ exifProfile ? . RemoveValue ( ExifTag . IPTC ) ;
271
225
}
226
+ }
272
227
273
- if ( frameMetadata . IccProfile != null )
228
+ private void ProcessIccProfile ( IccProfile iccProfile , ExifProfile exifProfile )
229
+ {
230
+ if ( iccProfile != null )
274
231
{
275
232
ExifByteArray icc = new ( ExifTagValue . IccProfile , ExifDataType . Undefined )
276
233
{
277
- Value = frameMetadata . IccProfile . ToByteArray ( )
234
+ Value = iccProfile . ToByteArray ( )
278
235
} ;
279
236
280
237
this . Collector . AddOrReplace ( icc ) ;
281
238
}
282
239
else
283
240
{
284
- frameMetadata . ExifProfile ? . RemoveValue ( ExifTag . IccProfile ) ;
241
+ exifProfile ? . RemoveValue ( ExifTag . IccProfile ) ;
285
242
}
243
+ }
286
244
287
- if ( ! skipMetadata && frameMetadata . XmpProfile != null )
245
+ private void ProcessXmpProfile ( bool skipMetadata , XmpProfile xmpProfile , ExifProfile exifProfile )
246
+ {
247
+ if ( ! skipMetadata && xmpProfile != null )
288
248
{
289
249
ExifByteArray xmp = new ( ExifTagValue . XMP , ExifDataType . Byte )
290
250
{
291
- Value = frameMetadata . XmpProfile . Data
251
+ Value = xmpProfile . Data
292
252
} ;
293
253
294
254
this . Collector . AddOrReplace ( xmp ) ;
295
255
}
296
256
else
297
257
{
298
- frameMetadata . ExifProfile ? . RemoveValue ( ExifTag . XMP ) ;
258
+ exifProfile ? . RemoveValue ( ExifTag . XMP ) ;
299
259
}
300
260
}
301
261
}
0 commit comments