Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 20.04.2018
Сообщений: 58

Gdiplus сохранение изображение

26.06.2018, 20:18. Показов 2154. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди добрые подскажите пожалуйста в чем ошибка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <iostream>
#include <objbase.h>
#include <gdiplus.h>
#pragma comment (lib,"gdiplus.lib")
 
int main()
{
    Gdiplus::GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
    
    CLSID clsidEncoder;
    Gdiplus::EncoderParameters encoderParams;
    encoderParams.Count = 1;
 
    Gdiplus::Image img(L"1.jpg");
 
    img.Save(L"2.jpg", &clsidEncoder, &encoderParams);
}
По сути я просто загружаю картинку и пересохраняю ее.
При этом создается файл 2.jpg размером 0
В чем проблема?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.06.2018, 20:18
Ответы с готовыми решениями:

gdiplus сохранить изображение
Доброго времени суток. Прошу помощи в проблеме, которую не могу решить уже вторую ночь. Есть программа сделанная через TWAIN с...

GDIPlus сохранение ссылки на интерфейс
проблема в следующем: известно что созданный интерфейс живет до тех пор пока идет выполнение процедуры. это подтверждается...

Сохранение и загрузка изображение
Мне нужно сохранить изображение из ImageView куда-нибудь в папку приложения и потом на другом активити загрузить это изображение в другой...

4
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,097
26.06.2018, 20:36
clsidEncoder и encoderParams нужно заполнить и передать в функцию Save. Это входные параметры. Пример заполнения можно найти в msdn (Image.Save и получение CLSID).
1
1 / 1 / 0
Регистрация: 20.04.2018
Сообщений: 58
26.06.2018, 21:19  [ТС]
А можно более точный пример привести пожалуйста.
Просто не могу разобраться.
0
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,097
26.06.2018, 22:36
Лучший ответ Сообщение было отмечено Mastering как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
#pragma comment (lib,"gdiplus.lib")
using namespace Gdiplus;
 
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
   UINT  num = 0;          // number of image encoders
   UINT  size = 0;         // size of the image encoder array in bytes
 
   ImageCodecInfo* pImageCodecInfo = NULL;
 
   GetImageEncodersSize(&num, &size);
   if (size == 0)
      return -1;  // Failure
 
   pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
   if (!pImageCodecInfo)
      return -1;  // Failure
 
   GetImageEncoders(num, size, pImageCodecInfo);
 
   for (UINT j = 0; j < num; ++j)
   {
      if (wcscmp(pImageCodecInfo[j].MimeType, format) == 0)
      {
         *pClsid = pImageCodecInfo[j].Clsid;
         free(pImageCodecInfo);
         return j;  // Success
      }    
   }
 
   free(pImageCodecInfo);
   return -1;  // Failure
}
 
int main()
{
    // Initialize GDI+.
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
 
    CLSID encoderClsid;
    int result = GetEncoderClsid(L"image/jpeg", &encoderClsid);
 
    if (result < 0)
    {
        printf("The JPEG encoder is not installed.\n");
    }
    else
    {
        Image img(L"1.jpg");
        Gdiplus::Status stat = img.GetLastStatus();
        if (stat != Gdiplus::Ok)
        {
            printf("Load failed (%d)\n", stat);
        }
        else
        {
            stat = img.Save(L"2.jpg", &encoderClsid, 0);
            if (stat != Gdiplus::Ok)
            {
                printf("Save failed (%d)\n", stat);
            }
            else
            {
                printf("Success\n");
            }
        }
    }
 
    GdiplusShutdown(gdiplusToken);
    return 0;
}
1
1 / 1 / 0
Регистрация: 20.04.2018
Сообщений: 58
27.06.2018, 18:08  [ТС]
Ygg огромнейшее спасибо!
Буду разбираться в коде
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.06.2018, 18:08
Помогаю со студенческими работами здесь

Сохранение массива в изображение
Дан набор байт, которые определяют изображение с заранее известной глубиной цвета — 8 бит. Необходимо сохранить данный массив в...

Сохранение нарисованного на Panel в изображение
Доброе время суток. Пишу программу для построения графиков функции. Столкнулся с проблемой. При сохранении в файла с Panel (на ней строится...

Неподгруженое изображение, сохранение пропорций
img { border: none; text-indent: -100vw; background: #eaeaea; } У всех изображений фиксированная высота и ширина....

Открытие и сохранение изображение в VBA
Здравствуйте. Цели следующие: 1) Запускаем приложение, открывается Form1. 2) В pictureBox1.Image автоматически поместить изображение...

Сохранение в HTML или изображение
Программа создаёт карточки( например, карточку текста или изображения). Внутри карточки редактировать нельзя. Нужно соxранять эти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru