Skip to content

Commit e6f454f

Browse files
authored
🤖 Merge PR DefinitelyTyped#71567 Add types for piexifjs by @Cygra
1 parent f0aaaee commit e6f454f

File tree

5 files changed

+409
-0
lines changed

5 files changed

+409
-0
lines changed

types/piexifjs/.npmignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*
2+
!**/*.d.ts
3+
!**/*.d.cts
4+
!**/*.d.mts
5+
!**/*.d.*.ts

types/piexifjs/index.d.ts

Lines changed: 338 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,338 @@
1+
export = Piexif;
2+
3+
declare const Piexif: {
4+
version: string;
5+
ImageIFD: Piexif.ImageIFD;
6+
ExifIFD: Piexif.ExifIFD;
7+
GPSIFD: Piexif.GPSIFD;
8+
InteropIFD: Piexif.InteropIFD;
9+
TAGS: {
10+
Image: { [key: number]: { name: string; type: string } };
11+
Exif: { [key: number]: { name: string; type: string } };
12+
GPS: { [key: number]: { name: string; type: string } };
13+
Interop: { [key: number]: { name: string; type: string } };
14+
"0th": { [key: number]: { name: string; type: string } };
15+
"1st": { [key: number]: { name: string; type: string } };
16+
};
17+
GPSHelper: Piexif.GPSHelper;
18+
remove: (jpeg: string) => string;
19+
insert: (exif: string, jpeg: string) => string;
20+
load: (data: string) => Piexif.ExifDict;
21+
dump: (exif_dict: Piexif.ExifDict) => string;
22+
};
23+
24+
declare namespace Piexif {
25+
interface ImageIFD {
26+
ProcessingSoftware: number;
27+
NewSubfileType: number;
28+
SubfileType: number;
29+
ImageWidth: number;
30+
ImageLength: number;
31+
BitsPerSample: number;
32+
Compression: number;
33+
PhotometricInterpretation: number;
34+
Threshholding: number;
35+
CellWidth: number;
36+
CellLength: number;
37+
FillOrder: number;
38+
DocumentName: number;
39+
ImageDescription: number;
40+
Make: number;
41+
Model: number;
42+
StripOffsets: number;
43+
Orientation: number;
44+
SamplesPerPixel: number;
45+
RowsPerStrip: number;
46+
StripByteCounts: number;
47+
XResolution: number;
48+
YResolution: number;
49+
PlanarConfiguration: number;
50+
GrayResponseUnit: number;
51+
GrayResponseCurve: number;
52+
T4Options: number;
53+
T6Options: number;
54+
ResolutionUnit: number;
55+
TransferFunction: number;
56+
Software: number;
57+
DateTime: number;
58+
Artist: number;
59+
HostComputer: number;
60+
Predictor: number;
61+
WhitePoint: number;
62+
PrimaryChromaticities: number;
63+
ColorMap: number;
64+
HalftoneHints: number;
65+
TileWidth: number;
66+
TileLength: number;
67+
TileOffsets: number;
68+
TileByteCounts: number;
69+
SubIFDs: number;
70+
InkSet: number;
71+
InkNames: number;
72+
NumberOfInks: number;
73+
DotRange: number;
74+
TargetPrinter: number;
75+
ExtraSamples: number;
76+
SampleFormat: number;
77+
SMinSampleValue: number;
78+
SMaxSampleValue: number;
79+
TransferRange: number;
80+
ClipPath: number;
81+
XClipPathUnits: number;
82+
YClipPathUnits: number;
83+
Indexed: number;
84+
JPEGTables: number;
85+
OPIProxy: number;
86+
JPEGProc: number;
87+
JPEGInterchangeFormat: number;
88+
JPEGInterchangeFormatLength: number;
89+
JPEGRestartInterval: number;
90+
JPEGLosslessPredictors: number;
91+
JPEGPointTransforms: number;
92+
JPEGQTables: number;
93+
JPEGDCTables: number;
94+
JPEGACTables: number;
95+
YCbCrCoefficients: number;
96+
YCbCrSubSampling: number;
97+
YCbCrPositioning: number;
98+
ReferenceBlackWhite: number;
99+
XMLPacket: number;
100+
Rating: number;
101+
RatingPercent: number;
102+
ImageID: number;
103+
CFARepeatPatternDim: number;
104+
CFAPattern: number;
105+
BatteryLevel: number;
106+
Copyright: number;
107+
ExposureTime: number;
108+
ImageResources: number;
109+
ExifTag: number;
110+
InterColorProfile: number;
111+
GPSTag: number;
112+
Interlace: number;
113+
TimeZoneOffset: number;
114+
SelfTimerMode: number;
115+
FlashEnergy: number;
116+
SpatialFrequencyResponse: number;
117+
Noise: number;
118+
FocalPlaneXResolution: number;
119+
FocalPlaneYResolution: number;
120+
FocalPlaneResolutionUnit: number;
121+
ImageNumber: number;
122+
SecurityClassification: number;
123+
ImageHistory: number;
124+
ExposureIndex: number;
125+
TIFFEPStandardID: number;
126+
SensingMethod: number;
127+
XPTitle: number;
128+
XPComment: number;
129+
XPAuthor: number;
130+
XPKeywords: number;
131+
XPSubject: number;
132+
PrintImageMatching: number;
133+
DNGVersion: number;
134+
DNGBackwardVersion: number;
135+
UniqueCameraModel: number;
136+
LocalizedCameraModel: number;
137+
CFAPlaneColor: number;
138+
CFALayout: number;
139+
LinearizationTable: number;
140+
BlackLevelRepeatDim: number;
141+
BlackLevel: number;
142+
BlackLevelDeltaH: number;
143+
BlackLevelDeltaV: number;
144+
WhiteLevel: number;
145+
DefaultScale: number;
146+
DefaultCropOrigin: number;
147+
DefaultCropSize: number;
148+
ColorMatrix1: number;
149+
ColorMatrix2: number;
150+
CameraCalibration1: number;
151+
CameraCalibration2: number;
152+
ReductionMatrix1: number;
153+
ReductionMatrix2: number;
154+
AnalogBalance: number;
155+
AsShotNeutral: number;
156+
AsShotWhiteXY: number;
157+
BaselineExposure: number;
158+
BaselineNoise: number;
159+
BaselineSharpness: number;
160+
BayerGreenSplit: number;
161+
LinearResponseLimit: number;
162+
CameraSerialNumber: number;
163+
LensInfo: number;
164+
ChromaBlurRadius: number;
165+
AntiAliasStrength: number;
166+
ShadowScale: number;
167+
DNGPrivateData: number;
168+
MakerNoteSafety: number;
169+
CalibrationIlluminant1: number;
170+
CalibrationIlluminant2: number;
171+
BestQualityScale: number;
172+
RawDataUniqueID: number;
173+
OriginalRawFileName: number;
174+
OriginalRawFileData: number;
175+
ActiveArea: number;
176+
MaskedAreas: number;
177+
AsShotICCProfile: number;
178+
AsShotPreProfileMatrix: number;
179+
CurrentICCProfile: number;
180+
CurrentPreProfileMatrix: number;
181+
ColorimetricReference: number;
182+
CameraCalibrationSignature: number;
183+
ProfileCalibrationSignature: number;
184+
AsShotProfileName: number;
185+
NoiseReductionApplied: number;
186+
ProfileName: number;
187+
ProfileHueSatMapDims: number;
188+
ProfileHueSatMapData1: number;
189+
ProfileHueSatMapData2: number;
190+
ProfileToneCurve: number;
191+
ProfileEmbedPolicy: number;
192+
ProfileCopyright: number;
193+
ForwardMatrix1: number;
194+
ForwardMatrix2: number;
195+
PreviewApplicationName: number;
196+
PreviewApplicationVersion: number;
197+
PreviewSettingsName: number;
198+
PreviewSettingsDigest: number;
199+
PreviewColorSpace: number;
200+
PreviewDateTime: number;
201+
RawImageDigest: number;
202+
OriginalRawFileDigest: number;
203+
SubTileBlockSize: number;
204+
RowInterleaveFactor: number;
205+
ProfileLookTableDims: number;
206+
ProfileLookTableData: number;
207+
OpcodeList1: number;
208+
OpcodeList2: number;
209+
OpcodeList3: number;
210+
NoiseProfile: number;
211+
}
212+
213+
interface ExifIFD {
214+
ExposureTime: number;
215+
FNumber: number;
216+
ExposureProgram: number;
217+
SpectralSensitivity: number;
218+
ISOSpeedRatings: number;
219+
OECF: number;
220+
SensitivityType: number;
221+
StandardOutputSensitivity: number;
222+
RecommendedExposureIndex: number;
223+
ISOSpeed: number;
224+
ISOSpeedLatitudeyyy: number;
225+
ISOSpeedLatitudezzz: number;
226+
ExifVersion: number;
227+
DateTimeOriginal: number;
228+
DateTimeDigitized: number;
229+
ComponentsConfiguration: number;
230+
CompressedBitsPerPixel: number;
231+
ShutterSpeedValue: number;
232+
ApertureValue: number;
233+
BrightnessValue: number;
234+
ExposureBiasValue: number;
235+
MaxApertureValue: number;
236+
SubjectDistance: number;
237+
MeteringMode: number;
238+
LightSource: number;
239+
Flash: number;
240+
FocalLength: number;
241+
SubjectArea: number;
242+
MakerNote: number;
243+
UserComment: number;
244+
SubSecTime: number;
245+
SubSecTimeOriginal: number;
246+
SubSecTimeDigitized: number;
247+
FlashpixVersion: number;
248+
ColorSpace: number;
249+
PixelXDimension: number;
250+
PixelYDimension: number;
251+
RelatedSoundFile: number;
252+
InteroperabilityTag: number;
253+
FlashEnergy: number;
254+
SpatialFrequencyResponse: number;
255+
FocalPlaneXResolution: number;
256+
FocalPlaneYResolution: number;
257+
FocalPlaneResolutionUnit: number;
258+
SubjectLocation: number;
259+
ExposureIndex: number;
260+
SensingMethod: number;
261+
FileSource: number;
262+
SceneType: number;
263+
CFAPattern: number;
264+
CustomRendered: number;
265+
ExposureMode: number;
266+
WhiteBalance: number;
267+
DigitalZoomRatio: number;
268+
FocalLengthIn35mmFilm: number;
269+
SceneCaptureType: number;
270+
GainControl: number;
271+
Contrast: number;
272+
Saturation: number;
273+
Sharpness: number;
274+
DeviceSettingDescription: number;
275+
SubjectDistanceRange: number;
276+
ImageUniqueID: number;
277+
CameraOwnerName: number;
278+
BodySerialNumber: number;
279+
LensSpecification: number;
280+
LensMake: number;
281+
LensModel: number;
282+
LensSerialNumber: number;
283+
Gamma: number;
284+
}
285+
286+
interface GPSIFD {
287+
GPSVersionID: number;
288+
GPSLatitudeRef: number;
289+
GPSLatitude: number;
290+
GPSLongitudeRef: number;
291+
GPSLongitude: number;
292+
GPSAltitudeRef: number;
293+
GPSAltitude: number;
294+
GPSTimeStamp: number;
295+
GPSSatellites: number;
296+
GPSStatus: number;
297+
GPSMeasureMode: number;
298+
GPSDOP: number;
299+
GPSSpeedRef: number;
300+
GPSSpeed: number;
301+
GPSTrackRef: number;
302+
GPSTrack: number;
303+
GPSImgDirectionRef: number;
304+
GPSImgDirection: number;
305+
GPSMapDatum: number;
306+
GPSDestLatitudeRef: number;
307+
GPSDestLatitude: number;
308+
GPSDestLongitudeRef: number;
309+
GPSDestLongitude: number;
310+
GPSDestBearingRef: number;
311+
GPSDestBearing: number;
312+
GPSDestDistanceRef: number;
313+
GPSDestDistance: number;
314+
GPSProcessingMethod: number;
315+
GPSAreaInformation: number;
316+
GPSDateStamp: number;
317+
GPSDifferential: number;
318+
GPSHPositioningError: number;
319+
}
320+
321+
interface InteropIFD {
322+
InteroperabilityIndex: number;
323+
}
324+
325+
interface GPSHelper {
326+
degToDmsRational: (degFloat: number) => [number, number][];
327+
dmsRationalToDeg: (dmsArray: number[], ref: string) => number;
328+
}
329+
330+
interface ExifDict {
331+
"0th"?: { [key: number]: any };
332+
"1st"?: { [key: number]: any };
333+
Exif?: { [key: number]: any };
334+
GPS?: { [key: number]: any };
335+
Interop?: { [key: number]: any };
336+
thumbnail?: string;
337+
}
338+
}

types/piexifjs/package.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"private": true,
3+
"name": "@types/piexifjs",
4+
"version": "1.0.9999",
5+
"projects": [
6+
"https://github.com/hMatoba/piexifjs"
7+
],
8+
"devDependencies": {
9+
"@types/piexifjs": "workspace:."
10+
},
11+
"owners": [
12+
{
13+
"name": "Bohan Wang",
14+
"githubUsername": "Cygra"
15+
}
16+
]
17+
}

types/piexifjs/piexifjs-tests.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import piexif = require("piexifjs");
2+
3+
var zeroth: { [key: number]: string | number[] } = {};
4+
var exif: { [key: number]: string | number | number[][] } = {};
5+
var gps: { [key: number]: string | number[] } = {};
6+
7+
zeroth[piexif.ImageIFD.Make] = "Make";
8+
zeroth[piexif.ImageIFD.XResolution] = [777, 1];
9+
zeroth[piexif.ImageIFD.YResolution] = [777, 1];
10+
zeroth[piexif.ImageIFD.Software] = "Piexifjs";
11+
12+
exif[piexif.ExifIFD.DateTimeOriginal] = "2010:10:10 10:10:10";
13+
exif[piexif.ExifIFD.LensMake] = "LensMake";
14+
exif[piexif.ExifIFD.Sharpness] = 777;
15+
exif[piexif.ExifIFD.LensSpecification] = [
16+
[1, 1],
17+
[1, 1],
18+
[1, 1],
19+
[1, 1],
20+
];
21+
22+
gps[piexif.GPSIFD.GPSVersionID] = [7, 7, 7, 7];
23+
gps[piexif.GPSIFD.GPSDateStamp] = "1999:99:99 99:99:99";
24+
var exifObj = {
25+
"0th": zeroth,
26+
Exif: exif,
27+
GPS: gps,
28+
};
29+
var exifStr = piexif.dump(exifObj);
30+
piexif.insert(exifStr, "");

0 commit comments

Comments
 (0)