Ich habe die Kamera versehentlich auf reduzierte Auflösung geschaltet und mehrere hundert Fotos wurden auf diese Weise gespeichert.
Dafür gibt es RAWs, damit ich sie in voller Auflösung neu entwickeln kann. Während die ursprüngliche Bildausrichtung erhalten bleibt, wird das von mir verwendete JPEG-Zuschneiden in der Kamera leider verworfen, und die JPEGs von RAWs haben immer das Sensorverhältnis 4: 3 (oder 3: 4).
Um zusammenzufassen:
Was ist das empfohlene Tool / die empfohlene Kette, um dies zu erreichen? Danke.
Ich habe eine Lösung in .NET Core entwickelt, die ich nicht akzeptieren werde (warte immer noch auf eine bessere Antwort).
Das Problem bei dieser Lösung ist, dass das Zuschneiden nicht verlustfrei ist (JPEGs werden neu komprimiert) und ImageSharp Bildmetadaten irgendwie beschädigt - die Uhrzeit des Aufnahmedatums wird in XNView als 00:00 angezeigt - ich musste es mit ExifTool beheben, indem ich Metadaten aus kopierte Kamera-JPEGs.
Ansonsten macht es was ich brauche.
Bilder werden in Unterordnern eines Pfades abgelegt:
/S - Kamera-JPEGs mit reduzierter Auflösung
/L - neu entwickelte JPEGs aus RAWs mit voller Auflösung
/T - Zielordner für beschnittene Bilder mit voller Auflösung
using System;
using System.IO;
using System.Linq;
using ImageSharp;
using SixLabors.Primitives;
namespace fix
{
class Program
{
static void Main(string[] args)
{
var smalls = Directory.GetFiles("path/S").OrderBy(p => p);
var tPath = "path/T/";
foreach (var path in smalls)
{
using (FileStream sStream = File.OpenRead(path))
// change path to full resolution JPEGs from RAWs
using (FileStream lStream = File.OpenRead(path.Replace("/S/", "/L/")))
{
var small = Image.Load(sStream);
var large = Image.Load(lStream);
Rectangle rect = new Rectangle();
// image height of the reduced resolution image with in-camera cropping
// it's always height, the portrait (2:3) mode is only in EXIF
if (small.Height == 1360)
{
// crop rectangle on the full resolution image (see above)
rect = new Rectangle(0, 168, 4000, 2664);
}
// this file has been cropped
if (rect.Width != 0)
{
using (FileStream tStream = File.OpenWrite(string.Format("{0}{1}", tPath, Path.GetFileName(path))))
{
var encoder = new ImageSharp.Formats.JpegEncoder();
encoder.Quality = 98; // as desired
large.Crop(rect).Save(tStream, encoder);
}
}
}
}
}
}
}
Aankhen
Benutzer681768917
Benutzer681768917
Aankhen
Benutzer681768917
Aankhen