Skip to content

Commit

Permalink
WebP reading
Browse files Browse the repository at this point in the history
  • Loading branch information
qdraw committed Nov 11, 2024
1 parent f735364 commit b4eaea3
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public enum ImageFormat
bmp = 13,
gif = 14,
png = 15,
webp = 16,

// Sidecar files
xmp = 30,
Expand Down Expand Up @@ -109,6 +110,12 @@ private static readonly List<string>
/// </summary>
private static readonly List<string> ExtensionMp4 = new() { "mp4", "mov" };

/// <summary>
/// WebP imageFormat
/// </summary>
private static readonly List<string> ExtensionWebp = new() { "webp" };


private static readonly Dictionary<ImageFormat, List<string>>
MapFileTypesToExtensionDictionary =
new()
Expand All @@ -120,7 +127,8 @@ private static readonly Dictionary<ImageFormat, List<string>>
{ ImageFormat.png, ExtensionPng },
{ ImageFormat.gpx, ExtensionGpx },
{ ImageFormat.mp4, ExtensionMp4 },
{ ImageFormat.xmp, ExtensionXmp }
{ ImageFormat.xmp, ExtensionXmp },
{ ImageFormat.webp, ExtensionWebp }
};

/// <summary>
Expand Down
3 changes: 2 additions & 1 deletion starsky/starsky/clientapp/src/interfaces/IFileIndexItem.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IExifStatus } from "./IExifStatus";
import {IExifStatus} from "./IExifStatus";

export interface IFileIndexItem {
lastEdited?: string;
Expand Down Expand Up @@ -44,6 +44,7 @@ export enum ImageFormat {
bmp = "bmp",
gif = "gif",
png = "png",
webp = "webp",
xmp = "xmp",
meta_json = "meta_json",
gpx = "gpx",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using System;
using System.Collections.Immutable;
using System.IO;
using System.Reflection;
using starsky.foundation.storage.Storage;
using starskytest.FakeMocks;

namespace starskytest.FakeCreateAn.CreateAnImageWebP;

public class CreateAnImageWebP
{
public readonly ImmutableArray<byte> Bytes = [..Array.Empty<byte>()];

public CreateAnImageWebP()
{
var dirName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if ( string.IsNullOrEmpty(dirName) )
{
return;
}

var path = Path.Combine(dirName, "FakeCreateAn",
"CreateAnImageWebP", "test.webp");

Bytes = [..StreamToBytes(path)];
}

private static byte[] StreamToBytes(string path)
{
var input = new StorageHostFullPathFilesystem(new FakeIWebLogger()).ReadStream(path);
using var ms = new MemoryStream();
input.CopyTo(ms);
input.Dispose();
return ms.ToArray();
}
}

Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
using starskytest.FakeCreateAn;
using starskytest.FakeCreateAn.CreateAnImageA330Raw;
using starskytest.FakeCreateAn.CreateAnImageA6600Raw;
using starskytest.FakeCreateAn.CreateAnImageWebP;
using starskytest.FakeMocks;
using XmpCore;
using XmpCore.Impl;
Expand Down Expand Up @@ -370,6 +371,41 @@ public void ExifRead_CreateAnImageA6600Raw_ReadExifFromFileTest()
Assert.AreEqual("E 18-200mm F3.5-6.3 OSS LE", item.LensModel);
Assert.AreEqual(ImageStabilisationType.On, item.ImageStabilisation);
}

[TestMethod]
public void ExifRead_CreateAnImageWebP_ReadExifFromFileTest()
{
var newImage = new CreateAnImageWebP().Bytes.ToArray();
var fakeStorage = new FakeIStorage(new List<string> { "/" },
new List<string> { "/test.webp" }, new List<byte[]> { newImage });

var item =
new ReadMetaExif(fakeStorage, null!, new FakeIWebLogger()).ReadExifFromFile(
"/test.dng");

Assert.AreEqual(ColorClassParser.Color.None, item.ColorClass);
Assert.AreEqual(string.Empty, item.Description);
Assert.IsFalse(item.IsDirectory);
Assert.AreEqual(string.Empty, item.Tags);
Assert.AreEqual(string.Empty, item.Title);
Assert.AreEqual(0, item.Latitude, 0.000001);
Assert.AreEqual(0, item.Longitude, 0.000001);
// Assert.AreEqual(4000, item.ImageHeight);
// Assert.AreEqual(6000, item.ImageWidth);
Assert.AreEqual(string.Empty, item.LocationCity);
Assert.AreEqual(string.Empty, item.LocationState);
Assert.AreEqual(string.Empty, item.LocationCountry);
Assert.AreEqual(0, item.LocationAltitude);
Assert.AreEqual(0, item.FocalLength);
Assert.AreEqual(new DateTime(0001, 01, 1, 0, 0, 0, DateTimeKind.Local),
item.DateTime);

Assert.AreEqual(string.Empty, item.MakeModel);
Assert.AreEqual("Sony", item.Make);
Assert.AreEqual("ILCE-6600", item.Model);
Assert.AreEqual("E 18-200mm F3.5-6.3 OSS LE", item.LensModel);
Assert.AreEqual(ImageStabilisationType.On, item.ImageStabilisation);
}

[TestMethod]
public void ExifRead_CreateAnImageA330Raw_ReadExifFromFileTest()
Expand Down
4 changes: 4 additions & 0 deletions starsky/starskytest/starskytest.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,10 @@
<Content Include="FakeCreateAn\CreateAnImageA330Raw\head_part.arw">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Remove="FakeCreateAn\CreateAnImageWebP\test.webp" />
<Content Include="FakeCreateAn\CreateAnImageWebP\test.webp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>

<PropertyGroup Condition=" '$(noSonar)' == 'true' ">
Expand Down

0 comments on commit b4eaea3

Please sign in to comment.