Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Картинка->Текст->Картинка, ??? 
:(
    Опции темы
Zzz
Дата 3.3.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 306
Регистрация: 21.2.2003
Где: Мурманск

Репутация: нет
Всего: 5



Вот кусочек кода:

Код

  Graphics::TBitmap *B = new Graphics::TBitmap;
  B->LoadFromFile("A.bmp");
  for (int i=0; i<B->Height; i++)
     for (int j=0; j<B->Width; j++)
    {
        Memo1->Lines->Add(B->Canvas->Pixels[i][j]);
    }
  Image1->Picture->Bitmap = B;

  Graphics::TBitmap *B1 = new Graphics::TBitmap;
  B1->Width = B->Width;
  B1->Height = B->Height;
  for (int i=0; i<B1->Height; i++)
     for (int j=0; j<B1->Width; j++)
    {
        B1->Canvas->Pixels[i][j] = (TColor)StrToInt(Memo1->Lines->Strings[i+j]);
    }
  Image2->Picture->Bitmap = B1;


Делается следующее: беру картинку, каждый пиксел записываю в Мемо, затем создаю новую и заполняю ее данными из Мемо. Картинки не похожи.
С чем это связано? Размера int не хватает или в чем то другом ошибка?


--------------------
Бесполезной громоздкой надстройкой является Windows от Майкрософт. Она занимает 1Мб памяти диска и рассчитана на использование устройства типа мышь.

"ЭВМ в инженерной практике" М. 1989г.
PM MAIL ICQ   Вверх
azesmcar
Дата 4.3.2005, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TStrings *t = new TStringList;
 Graphics::TBitmap *B = new Graphics::TBitmap;
 B->LoadFromFile("c:\\A.bmp");
 for (int i=0; i<B->Height; i++)
    for (int j=0; j<B->Width; j++)
   {
       t->Add(B->Canvas->Pixels[i][j]);
   }
 Image1->Picture->Bitmap = B;

 Graphics::TBitmap *B1 = new Graphics::TBitmap;
 B1->Width = B->Width;
 B1->Height = B->Height;
 for (int i=0; i<B1->Height; i++)
    for (int j=0; j<B1->Width; j++)
   {
       B1->Canvas->Pixels[i][j] = (TColor)StrToInt(t->Strings[i * B->Width + j]);
   }
 Image2->Picture->Bitmap = B1;
 delete t;
}


у тебя ошибка в строке
Код

B1->Canvas->Pixels[i][j] = (TColor)StrToInt(Memo1->Lines->Strings[i+j]);

Но что то мне в этом коде не нравиться...во первых лучше будет так...

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Graphics::TBitmap *B = new Graphics::TBitmap;
 B->LoadFromFile("c:\\A.bmp");
 TColor *pImage = new TColor[ B->Height * B->Width ];
 for (int i=0; i<B->Height; i++)
    for (int j=0; j<B->Width; j++)
   {
       pImage[i * B->Width + j] = B->Canvas->Pixels[i][j];
   }
 Image1->Picture->Bitmap = B;
 Graphics::TBitmap *B1 = new Graphics::TBitmap;
 B1->Width = B->Width;
 B1->Height = B->Height;
 for (int i=0; i<B1->Height; i++)
    for (int j=0; j<B1->Width; j++)
   {
       B1->Canvas->Pixels[i][j] = pImage[i * B->Width + j];
   }
 Image2->Picture->Bitmap = B1;
 delete B;
 delete B1;
 delete [] pImage;
}


К тому же алгоритм переобразования бинарных данных в текстовые уже существует...Base64, если тебе конечно это нужно...
PM   Вверх
Zzz
Дата 5.3.2005, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 306
Регистрация: 21.2.2003
Где: Мурманск

Репутация: нет
Всего: 5



Тьфу ты блин... Так обложаться.... smile Спасибо!
Цитата

К тому же алгоритм переобразования бинарных данных в текстовые уже существует...Base64, если тебе конечно это нужно...

Интересно... а поподробнее можно


--------------------
Бесполезной громоздкой надстройкой является Windows от Майкрософт. Она занимает 1Мб памяти диска и рассчитана на использование устройства типа мышь.

"ЭВМ в инженерной практике" М. 1989г.
PM MAIL ICQ   Вверх
azesmcar
Дата 9.3.2005, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Можно, он хранит таблицу в которой для каждого бинарного данного каким то алгоритмом выбираеться ASCII символ...примерно так...алгоритм описан в RFC (номер не помню) также можно поискать Base64..примеров в интернете полно...

У меня есть неплохой документ на эту тему...на какой мейл высылать???
PM   Вверх
Zzz
Дата 10.3.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 306
Регистрация: 21.2.2003
Где: Мурманск

Репутация: нет
Всего: 5



Цитата(azesmcar @ 9.3.2005, 01:15)
У меня есть неплохой документ на эту тему...на какой мейл высылать???

Шли сюда
Заранее спасибо. Очень поможешь.

Это сообщение отредактировал(а) Zzz - 10.3.2005, 17:16


--------------------
Бесполезной громоздкой надстройкой является Windows от Майкрософт. Она занимает 1Мб памяти диска и рассчитана на использование устройства типа мышь.

"ЭВМ в инженерной практике" М. 1989г.
PM MAIL ICQ   Вверх
Jackal
Дата 12.3.2005, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.2.2005
Где: Находка

Репутация: нет
Всего: нет



Цитата(azesmcar @ 9.3.2005, 17:15)
У меня есть неплохой документ на эту тему...на какой мейл высылать???

И мне, если мона, а лучше выложить файло здесь на сайте. smile

Это сообщение отредактировал(а) Jackal - 12.3.2005, 15:54
PM MAIL ICQ   Вверх
azesmcar
Дата 14.3.2005, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



base64.h
Код

//*********************************************************************
//* C_Base64 - a simple base64 encoder and decoder.
//*
//*     Copyright (c) 1999, Bob Withers - [email protected]
//*
//* This code may be freely used for any purpose, either personal
//* or commercial, provided the authors copyright notice remains
//* intact.
//*********************************************************************

#ifndef Base64_H
#define Base64_H

#include <string>
using std::string;  // comment if your compiler doesn't use namespaces

class Base64
{
public:
    static string encode(string data);
    static string decode(string data);
};

#endif

base64.cpp
Код

//*********************************************************************
//* Base64 - a simple base64 encoder and decoder.
//*
//*     Copyright (c) 1999, Bob Withers - [email protected]
//*
//* This code may be freely used for any purpose, either personal
//* or commercial, provided the authors copyright notice remains
//* intact.
//*********************************************************************

#include "Base64.h"

const char          fillchar = '=';

                        // 00000000001111111111222222
                        // 01234567890123456789012345
static string       cvt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

                        // 22223333333333444444444455
                        // 67890123456789012345678901
                          "abcdefghijklmnopqrstuvwxyz"

                        // 555555556666
                        // 234567890123
                          "0123456789+/";

string Base64::encode(string data)
{
    auto     string::size_type  i;
    auto     char               c;
    auto     string::size_type  len = data.length();
    auto     string             ret;

    for (i = 0; i < len; ++i)
    {
        c = (data[i] >> 2) & 0x3f;
        ret.append(1, cvt[c]);
        c = (data[i] << 4) & 0x3f;
        if (++i < len)
            c |= (data[i] >> 4) & 0x0f;

        ret.append(1, cvt[c]);
        if (i < len)
        {
            c = (data[i] << 2) & 0x3f;
            if (++i < len)
                c |= (data[i] >> 6) & 0x03;

            ret.append(1, cvt[c]);
        }
        else
        {
            ++i;
            ret.append(1, fillchar);
        }

        if (i < len)
        {
            c = data[i] & 0x3f;
            ret.append(1, cvt[c]);
        }
        else
        {
            ret.append(1, fillchar);
        }
    }

    return(ret);
}

string Base64::decode(string data)
{
    auto     string::size_type  i;
    auto     char               c;
    auto     char               c1;
    auto     string::size_type  len = data.length();
    auto     string             ret;

    for (i = 0; i < len; ++i)
    {
        c = (char) cvt.find(data[i]);
        ++i;
        c1 = (char) cvt.find(data[i]);
        c = (c << 2) | ((c1 >> 4) & 0x3);
        ret.append(1, c);
        if (++i < len)
        {
            c = data[i];
            if (fillchar == c)
                break;

            c = (char) cvt.find(c);
            c1 = ((c1 << 4) & 0xf0) | ((c >> 2) & 0xf);
            ret.append(1, c1);
        }

        if (++i < len)
        {
            c1 = data[i];
            if (fillchar == c1)
                break;

            c1 = (char) cvt.find(c1);
            c = ((c << 6) & 0xc0) | c1;
            ret.append(1, c);
        }
    }

    return(ret);
}

это работающий пример.

Остальное не знаю как выложить...единственный вариант который я нашел это ссылка, а сервера у меня нет...вышлю на мэйл...

PM   Вверх
Zzz
Дата 14.3.2005, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 306
Регистрация: 21.2.2003
Где: Мурманск

Репутация: нет
Всего: 5



Все получил. Огромное спасибо. Доки почитал - оказалось все просто, осталось только попробывать.

Репутацию поднять не смогу - постов мало smile Хотя заслуживаешь smile


--------------------
Бесполезной громоздкой надстройкой является Windows от Майкрософт. Она занимает 1Мб памяти диска и рассчитана на использование устройства типа мышь.

"ЭВМ в инженерной практике" М. 1989г.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0961 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.