- Jekyll-based photography portfolio template - Added Brain.md (project knowledge base) and Skill.md (skill commands) - Configured remote to Kroonk/Photography.git - Added .claude/ to .gitignore Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
(function(){var e=!1,t=function(e){return e instanceof t?e:this instanceof t?void(this.EXIFwrapped=e):new t(e)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=t),exports.EXIF=t):this.EXIF=t;var r=t.Tags={36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubsecTime",37521:"SubsecTimeOriginal",37522:"SubsecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:"OECF",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRation",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",40965:"InteroperabilityIFDPointer",42016:"ImageUniqueID"},o=t.TiffTags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright"},i=t.GPSTags={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential"},a=t.StringValues={ExposureProgram:{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},Components:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}};function s(e){return!!e.exifdata}function l(t,n){function r(r){var o=u(r),i=function(t){var n=new DataView(t);e&&console.log("Got file of length "+t.byteLength);if(255!=n.getUint8(0)||216!=n.getUint8(1))return e&&console.log("Not a valid JPEG"),!1;var r=2,o=t.byteLength;for(;r<o;){if(u=r,56===(l=n).getUint8(u)&&66===l.getUint8(u+1)&&73===l.getUint8(u+2)&&77===l.getUint8(u+3)&&4===l.getUint8(u+4)&&4===l.getUint8(u+5)){var i=n.getUint8(r+7);i%2!=0&&(i+=1),0===i&&(i=4);var a=r+8+i,s=n.getUint16(r+6+i);return c(t,a,s)}r++}var l,u}(r);t.exifdata=o||{},t.iptcdata=i||{},n&&n.call(t)}var o,i,a;if(t.src)if(/^data\:/i.test(t.src))r(function(e,t){t=t||e.match(/^data\:([^\;]+)\;base64,/im)[1]||"",e=e.replace(/^data\:([^\;]+)\;base64,/gim,"");for(var n=atob(e),r=n.length,o=new ArrayBuffer(r),i=new Uint8Array(o),a=0;a<r;a++)i[a]=n.charCodeAt(a);return o}(t.src));else if(/^blob\:/i.test(t.src)){(l=new FileReader).onload=function(e){r(e.target.result)},o=t.src,i=function(e){l.readAsArrayBuffer(e)},(a=new XMLHttpRequest).open("GET",o,!0),a.responseType="blob",a.onload=function(e){200!=this.status&&0!==this.status||i(this.response)},a.send()}else{var s=new XMLHttpRequest;s.onload=function(){if(200!=this.status&&0!==this.status)throw"Could not load image";r(s.response),s=null},s.open("GET",t.src,!0),s.responseType="arraybuffer",s.send(null)}else if(window.FileReader&&(t instanceof window.Blob||t instanceof window.File)){var l;(l=new FileReader).onload=function(t){e&&console.log("Got file of length "+t.target.result.byteLength),r(t.target.result)},l.readAsArrayBuffer(t)}}function u(t){var n=new DataView(t);if(e&&console.log("Got file of length "+t.byteLength),255!=n.getUint8(0)||216!=n.getUint8(1))return e&&console.log("Not a valid JPEG"),!1;for(var r,o=2,i=t.byteLength;o<i;){if(255!=n.getUint8(o))return e&&console.log("Not a valid marker at offset "+o+", found: "+n.getUint8(o)),!1;if(r=n.getUint8(o+1),e&&console.log(r),225==r)return e&&console.log("Found 0xFFE1 marker"),m(n,o+4,n.getUint16(o+2));o+=2+n.getUint16(o+2)}}var d={120:"caption",110:"credit",25:"keywords",55:"dateCreated",80:"byline",85:"bylineTitle",122:"captionWriter",105:"headline",116:"copyright",15:"category"};function c(e,t,n){for(var r,o,i,a,s=new DataView(e),l={},u=t;u<t+n;)28===s.getUint8(u)&&2===s.getUint8(u+1)&&(a=s.getUint8(u+2))in d&&((i=s.getInt16(u+3))+5,o=d[a],r=h(s,u+5,i),l.hasOwnProperty(o)?l[o]instanceof Array?l[o].push(r):l[o]=[l[o],r]:l[o]=r),u++;return l}function f(t,n,r,o,i){var a,s,l,u=t.getUint16(r,!i),d={};for(l=0;l<u;l++)a=r+12*l+2,!(s=o[t.getUint16(a,!i)])&&e&&console.log("Unknown tag: "+t.getUint16(a,!i)),d[s]=g(t,a,n,r,i);return d}function g(e,t,n,r,o){var i,a,s,l,u,d,c=e.getUint16(t+2,!o),f=e.getUint32(t+4,!o),g=e.getUint32(t+8,!o)+n;switch(c){case 1:case 7:if(1==f)return e.getUint8(t+8,!o);for(i=f>4?g:t+8,a=[],l=0;l<f;l++)a[l]=e.getUint8(i+l);return a;case 2:return h(e,i=f>4?g:t+8,f-1);case 3:if(1==f)return e.getUint16(t+8,!o);for(i=f>2?g:t+8,a=[],l=0;l<f;l++)a[l]=e.getUint16(i+2*l,!o);return a;case 4:if(1==f)return e.getUint32(t+8,!o);for(a=[],l=0;l<f;l++)a[l]=e.getUint32(g+4*l,!o);return a;case 5:if(1==f)return u=e.getUint32(g,!o),d=e.getUint32(g+4,!o),(s=new Number(u/d)).numerator=u,s.denominator=d,s;for(a=[],l=0;l<f;l++)u=e.getUint32(g+8*l,!o),d=e.getUint32(g+4+8*l,!o),a[l]=new Number(u/d),a[l].numerator=u,a[l].denominator=d;return a;case 9:if(1==f)return e.getInt32(t+8,!o);for(a=[],l=0;l<f;l++)a[l]=e.getInt32(g+4*l,!o);return a;case 10:if(1==f)return e.getInt32(g,!o)/e.getInt32(g+4,!o);for(a=[],l=0;l<f;l++)a[l]=e.getInt32(g+8*l,!o)/e.getInt32(g+4+8*l,!o);return a}}function h(e,t,r){var o="";for(n=t;n<t+r;n++)o+=String.fromCharCode(e.getUint8(n));return o}function m(t,n){if("Exif"!=h(t,n,4))return e&&console.log("Not valid EXIF data! "+h(t,n,4)),!1;var s,l,u,d,c,g=n+6;if(18761==t.getUint16(g))s=!1;else{if(19789!=t.getUint16(g))return e&&console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"),!1;s=!0}if(42!=t.getUint16(g+2,!s))return e&&console.log("Not valid TIFF data! (no 0x002A)"),!1;var m=t.getUint32(g+4,!s);if(m<8)return e&&console.log("Not valid TIFF data! (First offset less than 8)",t.getUint32(g+4,!s)),!1;if((l=f(t,g,g+m,o,s)).ExifIFDPointer)for(u in d=f(t,g,g+l.ExifIFDPointer,r,s)){switch(u){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":d[u]=a[u][d[u]];break;case"ExposureTime":d[u]=d[u].numerator+"/"+d[u].denominator;break;case"ExifVersion":case"FlashpixVersion":d[u]=String.fromCharCode(d[u][0],d[u][1],d[u][2],d[u][3]);break;case"ComponentsConfiguration":d[u]=a.Components[d[u][0]]+a.Components[d[u][1]]+a.Components[d[u][2]]+a.Components[d[u][3]]}l[u]=d[u]}if(l.GPSInfoIFDPointer)for(u in c=f(t,g,g+l.GPSInfoIFDPointer,i,s)){switch(u){case"GPSVersionID":c[u]=c[u][0]+"."+c[u][1]+"."+c[u][2]+"."+c[u][3]}l[u]=c[u]}return l}t.getData=function(e,t){return!((e instanceof Image||e instanceof HTMLImageElement)&&!e.complete)&&(s(e)?t&&t.call(e):l(e,t),!0)},t.getTag=function(e,t){if(s(e))return e.exifdata[t]},t.getIptcTag=function(e,t){if(s(e))return e.iptcdata[t]},t.getAllTags=function(e){if(!s(e))return{};var t,n=e.exifdata,r={};for(t in n)n.hasOwnProperty(t)&&(r[t]=n[t]);return r},t.getAllIptcTags=function(e){if(!s(e))return{};var t,n=e.iptcdata,r={};for(t in n)n.hasOwnProperty(t)&&(r[t]=n[t]);return r},t.pretty=function(e){if(!s(e))return"";var t,n=e.exifdata,r="";for(t in n)n.hasOwnProperty(t)&&("object"==typeof n[t]?n[t]instanceof Number?r+=t+" : "+n[t]+" ["+n[t].numerator+"/"+n[t].denominator+"]\r\n":r+=t+" : ["+n[t].length+" values]\r\n":r+=t+" : "+n[t]+"\r\n");return r},t.readFromBinaryFile=function(e){return u(e)},"function"==typeof define&&define.amd&&define("exif-js",[],function(){return t})}).call(this); |