Ícone escrito no source para ser exibido na janela

1. Ícone escrito no source para ser exibido na janela

Apprentice X
ApprenticeX

(usa FreeBSD)

Enviado em 21/11/2022 - 02:54h

Bom dia a todos!

A dúvida que tenho não é em como colocar um ícone em uma Janela! Preferência em C, mas pode ser em C++
Minha dúvida é como escrever esse ícone no source!

Não quero que o ícone seja puxado do hd, ou da internet, ou de qualquer outro lugar: my_icon = icon.png
Eu quero algo assim: my_icon = dados do ícone (O que seria tipo um monte de letras e números estranhos que representam a imagem)

Quando compilamos um source, não existe um ícone no binário, o que existe é um monte de código escrito, e dentro desse código o detalhamento do que é aquela imagem.
Já vi em linguagens como Delphi a anos atrás, a representação escrita tanto do form, qto de qualquer imagem inserida naquele form.
E é justamente essa representação escrita que desejo colocar no meu Source no lugar de um caminho para o ícone!

Alguém saberia como posso fazer isso?


  


2. Re: Ícone escrito no source para ser exibido na janela

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/11/2022 - 16:30h


ApprenticeX escreveu:

Bom dia a todos!

A dúvida que tenho não é em como colocar um ícone em uma Janela! Preferência em C, mas pode ser em C++
Minha dúvida é como escrever esse ícone no source!

Não quero que o ícone seja puxado do hd, ou da internet, ou de qualquer outro lugar: my_icon = icon.png
Eu quero algo assim: my_icon = dados do ícone (O que seria tipo um monte de letras e números estranhos que representam a imagem)

Quando compilamos um source, não existe um ícone no binário, o que existe é um monte de código escrito, e dentro desse código o detalhamento do que é aquela imagem.
Já vi em linguagens como Delphi a anos atrás, a representação escrita tanto do form, qto de qualquer imagem inserida naquele form.
E é justamente essa representação escrita que desejo colocar no meu Source no lugar de um caminho para o ícone!

Alguém saberia como posso fazer isso?

Boa tarde, segue sugestão:
No código, coloque a imagem como uma string em base64,
Faça um "decode" nessa string e gere a imagem...
Como não manjo de C/C++ é difícil dar mais detalhes....
Encode/Decode
https://terminalroot.com.br/2021/04/funcoes-para-gerar-base64-encode-e-decode-no-cpp.html
Exemplo em Bash:
# var img com a string da imagem em base64
img=$(base64 -w0 favicon.png)
#DECODE
base64 -d <<< "$img" > img.png
#md5sum, são iguais:
md5sum *.png
f774887ee62f9679b76e7d58ce4880d1 favicon.png
f774887ee62f9679b76e7d58ce4880d1 img.png

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



3. Re: Ícone escrito no source para ser exibido na janela

Apprentice X
ApprenticeX

(usa FreeBSD)

Enviado em 22/11/2022 - 23:11h

msoliver escreveu: Boa tarde, segue sugestão:
No código, coloque a imagem como uma string em base64,
Faça um "decode" nessa string e gere a imagem...
Como não manjo de C/C++ é difícil dar mais detalhes....
Encode/Decode
https://terminalroot.com.br/2021/04/funcoes-para-gerar-base64-encode-e-decode-no-cpp.html
Exemplo em Bash:
# var img com a string da imagem em base64
img=$(base64 -w0 favicon.png)
#DECODE
base64 -d <<< "$img" > img.png
#md5sum, são iguais:
md5sum *.png
f774887ee62f9679b76e7d58ce4880d1 favicon.png
f774887ee62f9679b76e7d58ce4880d1 img.png
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________

É exatamente isso que eu quero!
Capturar uma imagem para texto... no source e então Criar uma imagem a partir do source!
Vou agora estudar melhor o funcionamento desse comando base64, olhei o link que vc passou, muito útil também, embora eles façam com texto, vou ver se consigo adaptar, e verei se consigo fazer isso em C.

Você me ajudou a dar uma direção! Obrigado!


4. Re: Ícone escrito no source para ser exibido na janela

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 22/11/2022 - 23:34h

Aproveitando o embalo:
-converte a imagem em base64 e depois transforma num array global e stático no código.
Basta apenas salvar a string que é a imagem numa variável do tipo const unsigned char *


https://nerdki.blogspot.com/ acessa ai, é grátis


5. Re: Ícone escrito no source para ser exibido na janela

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/11/2022 - 02:31h

Não precisa necessariamente converter em Base64. Você pode colocar diretamente os valores dos bytes em arrays de caracteres (ou de qualquer outro tipo), assim evitando ter de codificar ou decodificar qualquer coisa em tempo de execução.

Existem também formatos de arquivos gráficos orientados a texto, tais como PBM,/PGM/PPM e XPM (sendo que a versão 1 e a versão 3 do XPM explicitamente usam um formato que é um trecho de programa em C).


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


6. Re: Ícone escrito no source para ser exibido na janela

Apprentice X
ApprenticeX

(usa FreeBSD)

Enviado em 23/11/2022 - 07:52h

paulo1205 escreveu:
Você pode colocar diretamente os valores dos bytes em arrays de caracteres (ou de qualquer outro tipo), assim evitando ter de codificar ou decodificar qualquer coisa em tempo de execução.

Estou tentando fazer isso, mas fiquei confuso em como salvar como texto para escrever em um array pronto no source.
Primeiro pensei em ler o arquivo img.png usando getc, porém qdo coloco isso em modo texto, ele não serve exatamente pra colocar em um array por escrito.

Sei que primeiro eu preciso converter do binário para algo que eu possa colocar em um array escrito no source.
Tipo algo como char Image[] = "89504E470D0A....
Para que depois eu possa criar o arquivo .png desse array acima

#include <stdio.h>

int main(void) {
FILE *Bin = fopen("img.png", "rb");
FILE *Txt = fopen("img.txt", "w");

for(int Caracter; (Caracter = getc(Bin)) != EOF; )
putc(Caracter, Txt);

fclose(Bin);
fclose(Txt);
}

Eu tendo um texto legível, poderia escrever o texto na variável.
Lembrando que o objetivo no final é um código onde eu possa criar o arquivo img.png a partir do source. Igual ao exemplo abaixo!

Qdo vc citou sobre PGM eu até consegui a partir de um exemplo na internet simplificar para o código abaixo, mas não consigo fazer o inverso!

#include <stdio.h>

int main(void) {
int image[13][13] = { // Minha imagem
{ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 },
{ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
{ 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47 },
{ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 },
{ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79 },
{ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95 },
{ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111 },
{ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127 },
{ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143 },
{ 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159 },
{ 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175 },
{ 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191 },
{ 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207 }};

FILE* MyPgm = fopen("Image.pgm", "wb");
int width = 13, height = 13; // var, dispensável, criada apenas pra facilitar o entendimento
fprintf(MyPgm, "P2\n");
fprintf(MyPgm, "%d %d\n", width, height);
fprintf(MyPgm, "255\n");

for(int x = 0, temp = 0; x < height; x++) {
for(int y = 0; y < width; y++) {
temp = image[x][y];
fprintf(MyPgm, "%d ", temp);
}
fprintf(MyPgm, "\n");
}
fclose(MyPgm);
}



7. Re: Ícone escrito no source para ser exibido na janela

Apprentice X
ApprenticeX

(usa FreeBSD)

Enviado em 23/11/2022 - 09:31h

Uma tentativa meio que frustrada!
Usei um exemplo do Paulo, para converter a img.png para Hexadecimal, e coloquei o resultado na variável, mas depois percebi que não sei como converter esse Hex para o Binário original.
Em minha tentativa ele preencheu como texto binário, e não exatamente o que eu esperava! Pois preencheu o arquivo com 0 e 1

Compila assim:
gcc test.c -o test -Wno-overlength-strings -O3 -Wall -pedantic -pedantic-errors -Werror

#include <stdio.h>

int main() {
// Gera o Hex em um arquivo txt para char Image[]
//FILE *Bin = fopen("img.png", "rb");
//FILE *Txt = fopen("img.txt", "w");
//int data_byte;

//for(size_t x = 0 ;(data_byte = fgetc(Bin)) != EOF; x++)
//fprintf(Txt, "%02X", data_byte);

//fclose(Bin);
//fclose(Txt);

char Image[] = "89504E470D0A1A0A0000000D4948445200000020000000200806000000737A7AF400000C0F7A5458745261772070726F66696C6520747970652065786966000078DAE5986B9223A11184FF730A1F8137C571808208DFC0C7F757B44633FB0AEFAEFF38C2D28E5A6AB568A8CCCA4CD6ED7FFDF3B87FF0483989CBA549EDB57A1EB9E71E076FC43F8F715F83CFF7F53EE2EB2B3E7F73DEBDBF889C4A1CD3F351EAEBFCE63C17C5D70F64BDC6199C2F5F061AFBF5C5FCF68BF91A28CAEB06C17F33A5149E1B787D0D345F03A5F87C11F2F379BDEE5CBBB4AF4BD81FE3D5D71979FE9CBDE4D87AF4596AA9BDE57A5AE453E298F814A28F1A7DFDF26DF6B5556D1277E5AA7AE7E4B2BC8B771F3F7C6E40A085C9A618770AC9DFD7FCAC223D7F237997AA1D52E3429F3AEFCB7D0D293CF500D2E8DBADD57D9C8FB551EDAFB573EF22FEE2F1BBCB76BF5CB7FCC8A1F7BBF0E379F7530EADD725E93BE8EBFBF8C3F93B5028DF7D91DEF78F5FEFDCE3EB5DFCF63C584CF74D41E4F3EF1C95732BCB2A46AE60575F8BFA58E27DC775934A26777F567936FE0AEFDB7D769E42AF2D08AA7EF9C973851E22F89F908386114ED8F7B8C28AF45A8E3B027E8C71C5744F0A64E8714107F862CF706283149A04D62C7894381B3FE6C2CCB8ADE365DDBB0977D6C0A5313058E0277FF4747FFA037B9E638D18829777ADA85188D6C34CC390B3572E0391705E452DB7C01FCFEF1F866B02C1E26E9985050E3F9F2166099FDC4A17E8C47085E3A30CA1E96B004AC4AD0B73092E0181AF2195508387FF2D040A290034987A4C394E1008A544659231A754C146A2DD9A9FB4702F8DC5C5E73C120B1285166E6043DB0256CE05FEB42C706894547229A59656A4F43268A44CFF551ACBA47A386BBE565A6DAD49EB6D48922C45AA3411E9327AEC09292F9DA6ECD27B1F837B0E461E7570F9E0C48C33B999679975B629B3CFB1A0CFCAABACBADA92D5D7D0A8491124A5A355B4EBD86143A59D77D975B72DBBEF71823BF1A4934F3948C091D3CF78A3165E6DFBFDF30F500B2FD4E245CA2E6C6FD438DBDAC710C1E4A4405F640475CA01C49B4100A1A361E625E41C0D39C38CB6A72B4A6492C5B0D160888160DE2196130C3B77C1FB44EEAF717394FE7BDCE2DF20E70CBABF40EE07DC7E8A9A9AE7AF8BD8D38556549FE83EAE19518659CA7747E77FF1C59F1EFFBF07825C6D4CA03A212559EDA8B9BAEAD47DC011C0976C71A8CEAEB38F5ED629E50C209DBBB6D064D987A9F7CA7DE651C5A03276925BD33C678115AD8FD21A6FD5F556F219F324C836751EA8BD6A09B3C53D758D79A3A1C2C67D9AB60305E68426E7F2A3EFD29BCEAD6D3B24DAE75337EC9C38CD84B35AFB8EA7EF3342CFC7F735359F36EE5AA7FA4406FBB10EEEBFACF492A16D9C54DC385D76CCD2D299F80C7D72721A0D3B65659AC74E759638639D4B17D6DAFAE9B3ECD5660BA3EF3547D91B341CED53B5CC4029642D16A47B9F9DAC08BB720DBFED856F2936BDDF07D7589DFA479DA2D6188F7A87918F2D75E63D739DE3F826A0B6ABA619540B0AA1DCB8A32081BA03D38935DC0F165CB945191280CEC5A5A1A061B3E0F8479978C74F90198D252C16B3CE5A9A2873DCBDCA94D735ED5E9386ECEA4F05B55A8561B963CF8DA0A1284E1FACA2727F32445F7BD59309285BE3D904906E8CE882CFC503BCC43D96A8DDB1F67D562209B100B56BBA22B6F71A7EB9945FB7FD9004C2B1F43108569A91B5B59A8FA526383CDC003B3F2035F08DA53BA0641D89528F46F99610AE7A7AA0494A9D09E301953CE012A5D7BA305584AF2E753594AB758938454252A29102788AA8E8DEE4AC0A0B4E4C638C6CB76AB4DE2DF241A097D5C52A4F86B462D4A9BCE6253A841E491541B66DD2582C877C989711D0CF609A1CAD3A7E4AE798623F8588D64B710D0D1F276B50E81AB87014E83518238D592146299C6C20D6034B46F94B8777508AF43F91841E16DE62CCE67E52498263D57A3C0486CFADD4812040C0234A3948DE1D4268C50444131231587F65488F35F00F19D145E78FA91062CF18697B688BC11BF0749134AD9B0A6D5468CC56F00CAF4A9B00FC4C49E3B6AE1BC74D80214DDD4F58C6E46AAEC083A44F8AC20EE01830A750017AAF950E95F0CC98213C65B125FB9DB3837350146247ED701BE32F66B7E81C35664AF47619A818412C0E2C5001DFA880700EBEC13E5BC5E78713038C25FB3D89E40B8DD469378AD83EA50D96D8C634040B4A30D6A96962BCBA36832DAD41AD903DBAD1F346794DDB02D5A1C3EAD116E01D23EF80D6B2EB415176059644F70CD4BBB498AEEF26E62095DF2C473B13D0EBA5AF18C13B5C80ED5469B70972744B7AC4912FD22657BEEBC9546B9DA1DAD41DE5044AD4409828DA5D4822618F358825B95205B93981CD57EF46E38D1687254259AC00A4C7920593710176D0F9700EE748C41D46042328333D3F058AB5F330B9AA145843EAC4889112D4E63B5FEC022B1821428511A3A1CE424851506FB542078E0698B7370B510C16A471766E366A5AF33625FFAA56A00D4EF316442A27BC0D77C08116D7230C2DA7E5D117DC108107AF755FD1B7330B19C69C25DA55A66ED745CEA486F10B27F9679051B46A0C122A96F0A105014854D028908B0C963AC96293344F5673340ACBE0652C64124AB71294966596342FD3D87EA0AF3BE32FD719D9CF208FF4D38075004FFEC4A40F1B3F4A871D1F4C7D7B1C568B89F4022F564A383CA7F2F3D60E2A2924D895202D2A0A1E68315B8B113665756786E73EA9C92E98320590765640E9AC0D0E45AF04DA8DDDDBEEF4B9DF88B49FD9D2F9B8D8F93804ACE8307AE5B0177BDB9A256EF1BB7C0EDD36B1A2223128815833E855966EA574D4320E9CC1EE4BB6C05893F68CB0A01BD51C2D8F98092A10C7F0FC40755C54E327AAEE03D6F305D6BA3F61FD09AA64EC8D867A4375D17EE657D58D4676A71B99166D89FF6A5BABA604C41878CB7BC340D2ECDA624D8147596059C4246E41A4BE8B43C49C3490A5618A050BE40F8EC3EF91380703C809B39BDDE5492B5BB6464476842F6837ED14057D5A2C96FD1A95E6A47955B30D39B2680A50EAE6256DC05176F9F920C2E602D66F6835D6A590805F91E7D897D4E9A0397D464BB055B7A056D23243433B68C14C599355971C56B1EF69685AC2F7C04ED201E68CD81C54DE3D1C928EDEB09AD8DB81055C6E29CF8E5CCFD46ECAF9E0052D62BD6853E6BE71A36593EE7F2842A95028FAB75F97A1FBCD0957A2A72C456C4B08DBC6434F3BE3E122EBCD3770C08E0C60B64CBBE637C0568771FBACB1285699F1EF636A45728360684ABFBC0E07434261717CC77648B759BAC2C6BE6206FF341316C30050D98F5D23DB2606C22ED6B4421A3D61116E82E7A2A966588ED81292A76EE86F1C463536FBBE6759662688162FCA2674540CC342D36D77428D4931BAB1E4C0AC75B06C5CD74847CBD2D028B8703F0234F32F5ADA629F76882D844FF6827089DD217BBF6241E5A6C1824D7074EF30F8F50801AFE3A0D40B82F67922BEB45EAD4F059A0F5F7462E2088E7512B9AAA599F0A95E4FAE479503416BF02DEB3213134044B1964140F51F8D6AE6788ED57C86BF6B0ADE569576C7E08875541502E23765C18A91E44A6CDF75C133DB13D87678526CC4680054A5146458F417DB474912B170139738B7D8B75A735C2B2460CC986C13DF6171B3341CD432BD9BE471616363D24927E1565E63E43E9485ADB05AC065E6FE58DBC1946D9465C3653E6F72DC16933D053BB2CAE7A7F23F2DFCC7B185BB13235C8671D882CD57FAF26C3D48E6787FA48DA115C6B3AC3D18964695E62DD0345398793771E8CFAEB66F0202A284A048647CE852EDFF00E8FE4216156FFF078B6F215ECDAC63A15102367B43000442D964A0B281906F31A5A5452E29379C043277B02D04736C3365021EF743452D73577B55DF43BD5047DB1FD97F24C8209F817F96BDA2D9213BCF2833B4808BB01DBACDBA25ADF0BB1BB5648D6611CED2A8E5A2E04EE516E4C84509AB644BD2C0C284687EFEA859E457CDB22001AC3C74A26084F269FBCBE4E7B57372369B610284B1D3F4D0A77C76B4D6B2042CA0B3780E9CD6B606D6C2B6D4F9EC7E98027DC126BB4477930FF365D388CC9B9790E592710C522143910AC2A9140C12EE849442452A2723885AED4FB3FF5671098D31D2ABE95A7976678830FEFCA5EBD82E99F9C541F4F60DA98E4FB1D807F8D766C47DBCF9D53108CE00780C617BB084FB13B72684467E49589BFD3A78556A44345C9C46029F4926EBE80A3B701AB48BEA5C490577CA2EA42531550F19E337AD8C8291662BB65EF495326C0B9B18EDD31525F8FFD4365F8EEE772FFC1F190897D4CEEEF0DFAFAC0A1B89D65BD000000006624B474400FF00FF00FFA0BDA793000000097048597300000B1300000B1301009A9C180000000774494D4507E406070D0012A8F7DC360000002874455874436F6D6D656E7400427920486569746F7220436F737461202D20686569746F7240676D782E636F6D4D852433000006284944415458C3ED976D6C95671DC67FF77D3F2FE7396F2D8796D252062D7403071B2C04E2200A0674248A8BF32541976C9A45C374895B3459B6ECD38CF18B18757321C610B3641912352E73C4040B63038753C67BBB95B252DA435FCEE9697BCEE9739EF3DCF7ED871A494C51D0347CD9FDE5FE74FF73E5BAFEFFFBBAFEC25ACBED3C92DB7C3E02E0CC6BF5E993B3F7F0633EE375CF2EDF3F7D79E47ACF399E3FCF00E26F82F0887B665EACF69997B32D7F08DF7DE697272A29014043D703F32C41639AF872B4A7702E7EF4706DDBAF8FBEF2DABA5A562AABA12963684ACEB304EF1F1923934F3CDD93D81CEFD874A635DDD1D8432AA709351C3C0D5933BF00DE78E7B3B90E3172E5D36BCEAB4426F108D94437E51AFC7900A21A083137003B3D8D0D67B0C682B5586BC15884989D1B2925268AB1C6200D4C1EEAEE44DB2D081108292F58AD4FBC34F2D7A6288A1F393A55DFB66BBDB024549D994530700D6A025ABB12A0C239019862017D2D8F8D34B2AE898DE9406B0F69FB9527EA780EF56299B8126575397C5126FCDDAA2125A4EF62EB3193C5E2A566ED1DC8CBE8D9A7B6260D4643D808E60EA8F4FB681EA614BE4E60F2FFB1094D1C7F3D36BA1F6CBFF49D1EE9396342CA9F5B6833E530A9CBE161A7ADE5ABC1DD9DC25FD284D7DC486D41C064D659B17BD3E66F3F79DFC73B9BEB27218AC14DB4E2B84F90E022F6EA30B296C7DEA00945C2C76AFB235D09BFEFA47D54E0235D05266E105A3F2EB00FE3AABF25D6ADDEE02F48A3A7A6A88D4E512A4F13A51D56DDB5123D55C844033DBF9BE9BF3CAE527AA5AC0CB5B3CA8395DB4E335C08B836F13926F65F9993019D1F5E67EAF1F794AF701B9238191F9554A8A4830C24C213D96447D3367F6102448409D20C9FEF23ACCCB0B4B519E15A54201049B3E6C389C4D6E268ADDDE64BD0F30A68D5492ABD8768344088B3733220B3E907757E5CB84985742DC231A02CA041C56000A1A056847403B2B109FFCE4E9A9A93C8A406631032C20B0C25D7146489E733017FF11BC407D6710B22D50416C87DED061258D362A626C00FC04A502E3816440CAA3EFB830B35EB24B28A3245DA3776406508512E80AB405711AE656357EA6D6AD33FA1A0C191085DFBEF5E60A37054C810AA050833E0A5C071408440154C0C568100B4849A42080171199C2A8C8E41791CD93241A2967F95D840EA16CCC85627DE74B31633F90156B4231A9742F5248C1C8730046B6665A81A181D81A911A81BF82739A480AED590DA0E3A7B0C3303CA87D8DEA41BC633DDCA0B4F8B8EC67BE5526796F6521D46E2EB45A40B320D85712831CB860B2801510AE225E00453A8F408644124A00A0C14FE4DEEB922593881CDBFFA2D917FE9174C16A0EB711069183A059383A00D180BAE07BDE72036E0BBE0F8E0E7D0995644D3B2DFCBCEF667697DEC3C7DEF5EAF9D72C1335088C14DDC00C0CC59187C740DFD8593F45F0D58F14558BD1D5389B9FADE29CAF961FC056D249BDA48FA199416E87086D2F02097CE9FA3541A7BEDF0E0E8832F1C2B98FF2990D829038545E744B6E907B8F6796C9A2BEF5CA0F7F8713EB666095DEBD7A2326D0877219624180571446AF1227277784343FDEF7DE3A7272E999B4B445105B0E039B3B3196B6CB1883D74F41EA1926BC5960D1CF9E34506073EE4FE8D2B48E814F1848310012295021580061B5988DC387072BBB73EF7F7B11DBBBE72538E29EC5BDF85CA19D8FE94C3C0DB5BCC9963DB75EF995D4C96D72A2BA8188FEE0B1133D9D6173EB3E313F746C5C62D821CC1E225788B1623FC2418B04240B9F8A4B7F34B7B6F3D945EE9DBC99FF65D42CA6EB97CF53332975B6B1D8536763C25A3DF6EBB932FAF0B86BFE33ACB3EE9062D4F089D2955FACA947BC7A89742C8E4A0EEECB3556FEFAD6606C9D9839FA25C7A88C9ABFB19E8D52CBC6B42B42CDF4BD2DF64142D601F92D8DF1CB9646C248B46FADECF844A75292FF1E3E85AB9522BCCA0272B2F9BB0B6C7FAC12D871661F7B5E758BAB9C8C8FB87702A1779E087CF999ED7A775AF40DDBF0721405B18AC415B2E81301E562BB03075E08D46990ED62338D2F8859D1640B52DBEC558DEB0BDC8E09BF730397C8065AB7E4576E92CB2742B72D57DFF1A958E391E373FBDA70474FF3FB14DD8BE5370704392CFBF552521E18E0E181BC2842E72D9DDF3BE98888F96D3DB0DE01F96B3B860D64192A40000000049454E44AE426082";

// Var para criar o arquivo de imagen
FILE *Hex_Image = fopen("img2.png", "wb");

int Qtd = 0, x = 0;
for( ; Image[Qtd] != 0; Qtd++) {
//fprintf(Hex_Image, "%c", Image[Qtd]); // Gravou os caracteres exatos, mas preciso convertê-los de Hex pra Binário
switch(Image[x]) {
case '0':
fprintf(Hex_Image, "0000");
break;
case '1':
fprintf(Hex_Image, "0001");
break;
case '2':
fprintf(Hex_Image, "0010");
break;
case '3':
fprintf(Hex_Image, "0011");
break;
case '4':
fprintf(Hex_Image, "0100");
break;
case '5':
fprintf(Hex_Image, "0101");
break;
case '6':
fprintf(Hex_Image, "0110");
break;
case '7':
fprintf(Hex_Image, "0111");
break;
case '8':
fprintf(Hex_Image, "1000");
break;
case '9':
fprintf(Hex_Image, "1001");
break;
case 'A':
case 'a':
fprintf(Hex_Image, "1010");
break;
case 'B':
case 'b':
fprintf(Hex_Image, "1011");
break;
case 'C':
case 'c':
fprintf(Hex_Image, "1100");
break;
case 'D':
case 'd':
fprintf(Hex_Image, "1101");
break;
case 'E':
case 'e':
fprintf(Hex_Image, "1110");
break;
case 'F':
case 'f':
fprintf(Hex_Image, "1111");
break;
//default:
} // switch
x++;
} // for
//printf("%d\n", Qtd); // 9684
fclose(Hex_Image);
}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts