Конвертация картинки PNG в JPG

Bigi

Client
Регистрация
31.03.2016
Сообщения
21
Благодарностей
1
Баллы
3
Теоретически знаю что можно через консольную прогу Image Magic конвертнуть файл изображения из PNG в JPG формат.
В принципе проблема решаема (еще не делал), но хочется знать может в С# есть уже вложенная подобная функция?
Чтобы в многопотоке отрабатывала скоростней.
 

Geograph

Client
Регистрация
16.02.2014
Сообщения
209
Благодарностей
113
Баллы
43
Что-то вроде этого:
C#:
using System.Drawing;
using System.Drawing.Imaging;

var pngFolderLoad = @"png\";
var jpgFolderSave = @"jpg\";
var files = Directory.GetFiles(pngFolderLoad, "*.png");
foreach (var file in files)
{
  Image.FromFile(file).Save(Path.Combine(jpgFolderSave, Path.GetFileNameWithoutExtension(file) + ".jpg"), ImageFormat.Jpeg);
}
Если нужно большее сжатие для JPG, то можешь использовать эту функцию:
C#:
static void SaveJpg(Image image, string filename, long quality = 85)
{
    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
    var myEncoderParameters = new EncoderParameters(3);

    myEncoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
    myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.ScanMethod, (int)EncoderValue.ScanMethodInterlaced);
    myEncoderParameters.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.RenderMethod, (int)EncoderValue.RenderProgressive);
    image.Save(filename, jpgEncoder, myEncoderParameters);
}
 
Последнее редактирование:
  • Спасибо
Реакции: Bigi

Bigi

Client
Регистрация
31.03.2016
Сообщения
21
Благодарностей
1
Баллы
3
Что-то вроде этого:
C#:
using System.Drawing;
using System.Drawing.Imaging;

var pngFolderLoad = @"png\";
var jpgFolderSave = @"jpg\";
var files = Directory.GetFiles(pngFolderLoad, "*.png");
foreach (var file in files)
{
  Image.FromFile(file).Save(Path.Combine(jpgFolderSave, Path.GetFileNameWithoutExtension(file) + ".jpg"), ImageFormat.Jpeg);
}
Спасибо!Насколько я понял код - а я совсем нуб в этом,
то он конвертит все PNG файлы в определенной папке?
 

Geograph

Client
Регистрация
16.02.2014
Сообщения
209
Благодарностей
113
Баллы
43
Спасибо!Насколько я понял код - а я совсем нуб в этом,
то он конвертит все PNG файлы в определенной папке?
Да, берет все картинки из папки "png" и сохраняет в папку "jpg". Папка "jpg" должна существовать.
 

Bigi

Client
Регистрация
31.03.2016
Сообщения
21
Благодарностей
1
Баллы
3
Да, берет все картинки из папки "png" и сохраняет в папку "jpg". Папка "jpg" должна существовать.
Да я уже это понял. Создал проект, в папке проекта создал эти 2 папки и в папку png кинул картинки.

Ошибки в синтаксе сыплются
ProjectMaker for ZennoPoster v5.9.9.1 by ZennoLab.com.jpg
 

Bigi

Client
Регистрация
31.03.2016
Сообщения
21
Благодарностей
1
Баллы
3
Могут быть ошибки из-за того что версия ЗП 5.9.9.1 ?
И как вообще в логе разбираться то - Что значит CS1525 или CS1002 ?
 

Geograph

Client
Регистрация
16.02.2014
Сообщения
209
Благодарностей
113
Баллы
43

Вложения

  • Спасибо
Реакции: Bigi

Bigi

Client
Регистрация
31.03.2016
Сообщения
21
Благодарностей
1
Баллы
3
Спасибо большое, все заработало!
 
Регистрация
23.03.2015
Сообщения
1 132
Благодарностей
662
Баллы
113
Вопрос снимается просто ошибся переменой
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113

simbioz

Client
Регистрация
31.08.2014
Сообщения
150
Благодарностей
27
Баллы
28
Всем привет, а как сделать чтоб все делалось из одной папки, на C# например чтоб брало картинку png с удалением, конвертировало в jpg и сохроняло в эту же папку?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 681
Благодарностей
1 864
Баллы
113
Всем привет, а как сделать чтоб все делалось из одной папки, на C# например чтоб брало картинку png с удалением, конвертировало в jpg и сохроняло в эту же папку?
выше есть ответ https://zennolab.com/discussion/threads/konvertacija-kartinki-png-v-jpg.38238/post-284842 его пробовали?
 

simbioz

Client
Регистрация
31.08.2014
Сообщения
150
Благодарностей
27
Баллы
28

radv

Client
Регистрация
11.05.2015
Сообщения
3 681
Благодарностей
1 864
Баллы
113

simbioz

Client
Регистрация
31.08.2014
Сообщения
150
Благодарностей
27
Баллы
28

radv

Client
Регистрация
11.05.2015
Сообщения
3 681
Благодарностей
1 864
Баллы
113
  • Спасибо
Реакции: simbioz

simbioz

Client
Регистрация
31.08.2014
Сообщения
150
Благодарностей
27
Баллы
28
Вы же и хотели, чтобы все было в одной папке, просто удаляйте обработанные файлы . Примеры кода удаления есть тут
Тут в примере только как удалить один файл, как тогда удалить все картинки с расширением png?

string path = @"C:\apache\hta.txt";
FileInfo fileInf = new FileInfo(path);
if (fileInf.Exists)
{
fileInf.Delete();
// альтернатива с помощью класса File
// File.Delete(path);
}
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 681
Благодарностей
1 864
Баллы
113
Тут в примере только как удалить один файл, как тогда удалить все картинки с расширением png?
Так у вас же цикл. Вставляете блок удаления после изменения расширения.
Если вы не понимаете где цикл и т.п. может не стоит использовать код и стоит сделать логику выполнения на кубиках? Или попытаться разобраться в логике используемого блока кода?
 
  • Спасибо
Реакции: simbioz

simbioz

Client
Регистрация
31.08.2014
Сообщения
150
Благодарностей
27
Баллы
28
Так у вас же цикл. Вставляете блок удаления после изменения расширения.
Если вы не понимаете где цикл и т.п. может не стоит использовать код и стоит сделать логику выполнения на кубиках? Или попытаться разобраться в логике используемого блока кода?
Спасибо, буду разбираться
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)