Я провожу некоторое тестирование для будущего проекта, в котором я буду создавать шифровальщик изображений. Прямо сейчас я просто хотел собрать способ преобразования растрового изображения в массив байтов, сохранить его в текстовый файл, перезагрузить и повторно сохранить под другим именем. У меня заработало ... потом просто проблема с размером файла. Мое преобразованное изображение (то, которое считывается из массива байтов для создания изображения) показывает больший размер файла, чем исходное изображение. Вот мой код:
public class Program
{
public static void Main( string[] args )
{
/**
* Load the bitmap and convert it to a byte array
* then save the file to the desktop
*/
byte[] imageBytes = ImageToByte( new Bitmap( "C:/Users/Krythic/Desktop/NovaEngine.png" ) );
File.WriteAllBytes( "C:/Users/Krythic/Desktop/NovaImageData.txt" , imageBytes );
/**
* Load the saved image bytes, then convert them back into an image and save it to the
* desktop under a new name.
*/
byte[] convertedImageBytes = File.ReadAllBytes("C:/Users/Krythic/Desktop/NovaImageData.txt");
Bitmap image = ConvertToBitmap(convertedImageBytes);
image.Save("C:/Users/Krythic/Desktop/ConvertedImage.png");
}
public static byte[] ImageToByte( Bitmap img )
{
ImageConverter converter = new ImageConverter();
return ( byte[] )converter.ConvertTo( img , typeof( byte[] ) );
}
private static Bitmap ConvertToBitmap( byte[] imagesSource )
{
ImageConverter imageConverter = new ImageConverter();
Image image = ( Image )imageConverter.ConvertFrom( imagesSource );
return new Bitmap( image );
}
}
Я думаю, проблема в image.Save (); функция, которая ... я думаю ... не подбирает оптимальное сжатие для изображения. Может я ошибаюсь? Вот изображение страниц свойств для обоих изображений:
Вы также заметите, что сохраненная версия исходного изображения с байтовым массивом показывает больший размер файла. Почему это? Разве размер файла не должен оставаться постоянным на протяжении всего периода преобразования?
Обновление: я почти уверен, что функции, которые я использую для преобразования изображения, используют плохие методы преобразования. Это объясняет, почему размер исходного png отличается от размера файла с байтовым массивом, который должен быть одинаковым. Чтобы решить эту проблему, мне нужен эффективный или правильный способ делать то же самое, что и эти две функции.