Ich möchte ein optimiertes Bild auf Amazon hochladen.Wie man ImageCodecInfo in Byte [] oder Stream umwandelt
So dass ich dieses article gefunden habe, das erklärt, wie man ein Bild mit einem Kompressionsniveau optimiert.
Das Problem ist, dass dieses Beispiel das Bild auf der Festplatte speichert und ich es in Amazon-Speicher speichern muss.
Ich habe diesen Code:
public static ImageCodecInfo OptimizeImage(Image image, string fileName, long compression, string type)
{
var encoderParams = new EncoderParameters(1)
{
Param = {[0] = new EncoderParameter(Encoder.Quality, compression)}
};
return GetEncoderInfo(type);
}
private static ImageCodecInfo GetEncoderInfo(string mime_type)
{
ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
for (int i = 0; i <= encoders.Length; i++)
{
if (encoders[i].MimeType == mime_type)
return encoders[i];
}
return null;
}
Ich sollte ein Stream
oder byte[]
Objekt, um es müssen die UploadImageToAmazon
Methode als Parameter zu senden.
Also, ich habe ein Image-Objekt und seine ImageCodecInfo, wie kann ich es in Stream
oder byte[]
konvertieren?
Oder wenn Sie mir vorschlagen könnten, wie Sie Bilder optimieren und in Amazon hochladen, wäre auch gut.
Danke.
@Misha, werfen Sie einen Blick in der 'image.Save'-Zeile in Ihrem verknüpften Artikel. Anstatt einen Dateinamen als ersten Parameter zu übergeben, können Sie einen 'MemoryStream' verwenden. – David
@David Ich kann die Save-Methode nicht verwenden, weil ich sie in Amazon speichern möchte und nicht lokal. Oder fehlt mir etwas? Kann ich diese Methode verwenden, um die Bilder direkt in Amazon zu speichern? –
@Misha, verwenden Sie die normale 'Save' Methode, um zu einem' MemoryStream' zu speichern. Mit einem 'MemoryStream' wird nichts auf der Festplatte gespeichert. Dann können Sie die 'ToArray'-Methode für den' MemoryStream' verwenden, um die Daten zu erhalten, die Sie zu Amazon hochladen möchten. – David