Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
Br.Misha
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
1

При конвертации из png в bmp теряется прозрачность

18.07.2012, 19:16. Просмотров 3269. Ответов 10
Метки нет (Все метки)

мне нужно во время работы программы загрузить png изображения в ImageList, но в ImageList картинки появляются с каким то серым фоном. Глюк проявляется даже если загружать не в ImageList, а в Timage, типа вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
    Graphics::TBitmap *bmp=new Graphics::TBitmap;
    TPngImage *png = new TPngImage();
    png->Transparent = true;
    bmp->Transparent = true;
    bmp->Width = 100;
    bmp->Height = 100;
 
    png->LoadFromFile("setup.png");
    bmp->Assign(png) ;
 
    Image1->Picture->Assign(bmp);
в результате появляется картинка с серым фоном, если сделать так Image1->Picture->Assign(png), то фона нет. Получается, что фот появляется при bmp->Assign(png), тоесть, при конвертации png в bmp. В инете читал, что у png и bmp разные форматы прозрачности. Но может, всетаки, можно как то сделать конвертацию без потери прозрачности?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2012, 19:16
Ответы с готовыми решениями:

Вращение TImage c PNG. Нужна переделка решения для BMP под PNG
Здравствуйте. Очень нужна помощь с вращением. Есть решение данной проблемы для формата bmp :...

PNG прозрачность
У меня BCB 2010 там есть TPNGImage.hpp есть возможность создавать png холсты))) так вот мне нужно...

Конвертация bmp в png
есть изображение созданое путём Graphics::TBitmap *Bitmap=new Graphics::TBitmap; надо...

Преобразовать JPG или PNG в BMP
Есть код: if(clk == "jpg" || clk == "JPG" || clk == "JPEG" || clk == "jpeg") { try { ...

Конвертировать из BMP в PNG без VCL
Приветствую, Задача: Конвертировать из BMP в PNG без VCL (но работаю на C++ Builder), без доп...

10
LK
Заблокирован
18.07.2012, 19:34 2
1.
C++
1
2
3
4
5
6
7
8
9
10
Graphics::TBitmap *bmp = new Graphics::TBitmap();
bmp->LoadFromFile("test.bmp");
bmp->Transparent = true;  // разрешаем прозрачность
bmp->TransparentMode = tmFixed; // для прозрачности будем использовать фиксированное значение цвета
bmp->TransparentColor = clWhite; // превратим белый цвет в прозрачный
delete bmp;
bmp = NULL;
 
// Если в третьей строчке вместо tmFixed указать tmAuto,
// то прозрачным будет сделан нижний левый пиксель.
2. Настоящая прозрачность с TBitmap
0
Br.Misha
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
18.07.2012, 20:18  [ТС] 3
попробовал, но не работает.
Сначала думал, что это потому, что у меня тот фон, что должен быть прозрачным, не мелого а другого цвета, я его определил с помощью ColorPic_v41, подставил, но всеравно не работает.
C++
1
2
3
4
5
6
7
8
9
10
        Graphics::TBitmap *bmp=new Graphics::TBitmap;
    TPngImage *png = new TPngImage();
    png->Transparent = true;
    bmp->Transparent = true;
    bmp->Width = 100;
    bmp->Height = 100;
    bmp->TransparentMode = tmFixed; // для прозрачности будем использовать фиксированное значение цвета
    bmp->TransparentColor = 0x3B4751; // превратим белый цвет в прозрачный
    png->LoadFromFile("setup.png");
    bmp->Assign(png) ;
И даже если ставлю tmAuto вместо tmFixed, то всеравно фон не прозрачный, хотя нижний левый пиксель как раз того цвета, который должен быть прозрачным
0
LK
Заблокирован
18.07.2012, 20:36 4
C++
1
2
bmp->TransparentMode = tmFixed; // для прозрачности будем использовать фиксированное значение цвета
// bmp->TransparentColor = 0x3B4751
не пробовал?

Добавлено через 1 минуту
а вам не кажется. что, пока вы делаете картинку прозрачной, ее еще в битмапе нет:
C++
1
2
3
4
bmp->TransparentMode = tmFixed; // для прозрачности будем использовать фиксированное значение цвета
    bmp->TransparentColor = 0x3B4751; // превратим белый цвет в прозрачный
    png->LoadFromFile("setup.png");
    bmp->Assign(png) ;
0
18.07.2012, 20:36
Br.Misha
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
18.07.2012, 21:08  [ТС] 5
эм, тут я случайно забыл у сомого Timage установить прозрачность, теперь на нем фон прозрачный даже когда не указываю TransparentMode у bmp (там помойму по умолчанию и так авто). А вот с ImageList(sImageList) этот прикол не проходит, если загружать png просто кликнув по компоненту, то загружается сразу нормально без фона, а вот когда запускаю прогу и загружаю еще картинку (в RunTime), то вот эта загруженая остается в фоном.
TransparentMode пробовал указывтаь и до загрузки bmp, и после, результат одинаков

Добавлено через 19 минут
а мож я не правильно в imagelist добавляю?
я делаю так imlist->Add(bmp, bmp);
0
LK
Заблокирован
18.07.2012, 21:23 6
add a png image to a imagelist in runtime using Delphi XE
0
Br.Misha
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
18.07.2012, 21:38  [ТС] 7
LK, попробовал, но не работает. Там правда под XE, а у меня 2010, мож из-за этого
0
LK
Заблокирован
18.07.2012, 22:06 8
та не, вашего
C++
1
imlist->Add(bmp, bmp);
достаточно
0
Br.Misha
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
18.07.2012, 22:14  [ТС] 9
эм, что то я не доганяю...
0
kzru_hunter
1066 / 781 / 100
Регистрация: 01.02.2011
Сообщений: 1,795
Записей в блоге: 1
19.07.2012, 08:25 10
может проще в vector запихнуть?
0
Br.Misha
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
19.07.2012, 17:23  [ТС] 11
разобрался.
Проблема была в цветовом режиме исходных изображений. Поставил через фотошоп RGB и прозрачность осталась)))))
0
19.07.2012, 17:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2012, 17:23

GDI+ и прозрачность PNG
Редко программирую что-либо, но бывает. Помогите советом или примером в решении, как мне казалось,...

Изменить прозрачность PNG
В у дива id = "#Obloge2". Его описание в css: #Obloge2 { background: url(Staty.png) no-repeat...

IE6 и прозрачность png
У кого-нибудь есть наиболее лучшее решение. В интернете много всего но пока не подходит ничего.


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru