Lê uma imagem PPM e salva uma cópia com uma mensagem ASCII codificada no bit menos significativo (LSB) de seus pixels.
- Parâmetros
-
argc | Número de argumentos da linha de comando. |
argv | Argumentos da linha de comando. |
Armazena a mensagem que será armazenada dentro da imagem.
Armazena a imagem através dos parâmetros da classe Image.
Armazena em uma string o conteúdo da imagem PPM.
Testa se o arquivo é de fato um arquivo P3/PPM observando sua extensão.
Testa se a função ReadPPM() foi bem-sucedida, interrompe o processo de codificação caso contrário.
A mensagem é inserida.
A mensagem é codificada.
Testa se um arquivo com o mesmo nome já existe dentro da pasta de origem.
Armazena a escolha de sobrescrever. A resposta padrão é 'não'.
Testa se a resposta foi 'não', se verdadeiro, interrompe o processo de codificação.
Testa se o arquivo está aberto, se verdadeiro, cria o arquivo PPM e armazena o conteúdo modificado nele.
14{
15 if (argc != 3)
16 {
17 cout << "Uso: " << argv[0] << " <nome_do_arquivo_original> <nome_do_arquivo_resultante>" << endl;
18 return 1;
19 }
20
21 string img_name = argv[1];
22 string file_name = argv[2];
23 string msg;
25 ofstream file;
26 string img_content;
28
30 {
31 cout << "\033[1;31mTipo de arquivo de leitura inválido.: "+img_name +"\033[0m\n";
32 return 1;
33 }
35 {
36 cout << "\033[1;31mTipo de arquivo de saida inválido.: "+file_name +"\033[0m\n";
37 return 1;
38 }
41 {
43 getline(cin, msg);
46 }
47 else
48 {
49 cout << "\033[1;31mArquivo original não existe.\033[0m\n";
50 return 0;
51 }
52
53
54
56 if (fs::exists(file_name))
57 {
58 char overwrite = 'n';
60 cout << "O arquivo " << file_name << " já existe. Deseja sobrescrevê-lo? (s/n): ";
61 cin >> overwrite;
62
64 if (overwrite != 's' && overwrite != 'S')
65 {
66 std::cout << "\033[1;31mArquivo resultante já existe. Operação cancelada.\033[0m\n";
67 return 1;
68 }
69 }
70
72
74 file.open(file_name);
75 if (file.is_open())
76 {
77 file << img_content;
78 file.close();
79 cout << "\033[1;32mImagem gerada com sucesso: " << file_name << "\033[0m" << endl;
80
81 }
82 else
83 {
84 cout << "Erro ao criar o arquivo." << endl;
85 }
86
87 return 0;
88}
Define uma imagem PPM alocada dinamicamente e fornece vários métodos para manipular e acessar os dado...
Definição Image.h:30
bool ReadPPM(const string &file_name)
Lê e armazena dinamicamente o conteúdo de uma imagem de um arquivo PPM válido.
Definição Image.h:198
string CreatePPM() const
Função que cria uma string contendo todos os dados de uma imagem PPM.
Definição Image.h:173
void CodeMsg(string msg)
Função principal usada na codificação e ocultação de uma mensagem ASCII nos bits menos significativos...
Definição Image.h:291
bool ExtensionCheck(const string &input_text, const string &file_type)
Função que verifica se uma string termina com a substring válida.
Definição Image.h:157