Ir para conteúdo
Fórum Script Brasil
  • 0

Manipulação de imagem em C


Danilo Elias da Silva

Pergunta

Boa noite pessoal,

Estou precisando de uma ajuda de vocês

Eu estou precisando construir um código em C, aonde tenha 4 opções:

Opção 1 – Fornece o nome do arquivo da imagem.
Opção 2 – Entra com a mensagem com o tamanho máximo de 255 caracteres e grava a imagem em arquivo com a imagem codificada.
Opção 3 – Exibi na tela a mensagem extraída da imagem na tela.
Opção 4 – Sai do programa.

A idéia é dar um nome a um arquivo de imagem já criado, depois na opção 2, eu devo digitar até no 255 caracteres, e estes digitos deverão entrar no código hexadecimal de desta imagem existente, sem afetar os caracteres de controle da imagem.

Sei que tem que usar for, fseek e ponteiros, mas não entendi muito o conceito.

Depois na opção 3, eu preciso exibir o código hexadecimal com o que eu digitei.

A principio que eu consegui fazer isso, tomando como referencia um arquivo de texto (extensão .txt). Mas estou tendo dificuldades.

O código que eu já criei foi este:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[]) {
    
    //Declarações das Funções
    void LeNomedoArquivo(char *txt);
    void LeVetor(char *txt);
    void ExibeVetor(char *txt);
    void Temporizacao (void);
    
    //Declarações das Variáveis
    FILE *arquivo=0; // Variável zerada para não dar erro no fclose;
    int op, estado;
    char NomedoArquivo[255]="";
    char texto[255];
    char *ptexto;
    
    ptexto=&texto;
    
    do
    {
        system("cls");
        printf("Nome do arquivo: %s",NomedoArquivo);
          printf("\n\n1) Abertura de arquivo\n");
          printf("2) Codifica a mensagem\n");
        printf("3) Decodifica a mensagem\n");
        printf("4) Sai");
        op=getch();
        
        
        if (op=='1')
        {
            system("cls");
            LeNomedoArquivo(NomedoArquivo);
            Temporizacao();
        }
        
        if (op=='2')
        {
            system("cls");
            LeVetor(ptexto);
            Temporizacao();
        }
        if (op=='3')
        {
            system("cls");
            ExibeVetor(texto);
            Temporizacao();
        }

    }while (op!='4');
    return 0;
}    


//*********************************
//* Função de Abertura de Arquivo *
//*********************************

void LeNomedoArquivo(char *txt)
{
    printf("Entre com o nome do arquivo:\n>");
    fopen("NomedoArquivo","r");
    gets(txt);
        
}

void LeVetor(char *txt)
{
    printf ("Entre com uma mensagem com o tamanho maximo de 255 caracteres a ser gravada na imagem codificada [255]:\n>");
    gets(txt);
    printf ("\n\nSucesso\n\n");
        
}

void ExibeVetor(char *txt)
{
    printf ("Segue mensagem extraida abaixo:\n>%s",txt);
}

void VisualizaArquivoHexa(char *NomArq)
{
    FILE *arq; //vai ser associada ao arquivo
    int c;
    int cont=0;
    int cont2=0;
    
    arq = fopen(NomArq,"r");
    if(arq==0)
        printf("\nErro na leitura do arquivo");
    else
        printf("\nArquivo aberto com sucesso\n\n");
    
    if (arq !=0)
    {
        do
        {
            c=fgetc(arq);
            if(!feof(arq))
            {
                if(c<16)
                    printf("0");
                printf("%x ",c);
            }
            else
            {
                arq=0;    
            }
            cont++;
            cont2++;
            if (cont>255)
            {
                getch();
                cont=0;
            }
            if (cont2>15)
            {
                printf("\n");
                cont2=0;
            }
        }while (arq!=0);
        fclose(arq);
        printf("\n\nFim do arquivo\n\n");
        
    }
}

void Temporizacao (void)
{
    printf("\n.");
    sleep(1);
    printf(".");
    sleep(1);
    printf(".");
}

 

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...