Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Графические файлы и C++Builder 2006

8.2K
16 июня 2007 года
Pelican
115 / / 16.06.2007
Всем привет. Меня интересует такой вопрос: как изменить высоту и ширину изображения графического файла ((BMP & Jpeg)). Спасибо.
497
16 июня 2007 года
IL84
267 / / 24.04.2003
Попробуй компонент TImage32 - один из немногих, который хорошо интерполирует.
18K
16 июня 2007 года
un_named
60 / / 24.04.2007
Вместо BitBlt применять StretchBlt

ЗЫ Скока миньа ниучи - всьо-равно ламер.
Найдешь абсолютного знатока - свистни ;-)
8.2K
16 июня 2007 года
Pelican
115 / / 16.06.2007
IL84, если без сторонних компонентов это сделать геморройно, то можно узнать, только не смейтесь, как ставить компонеты в BDS 2006? В CBuilder 6 было все понятно, то здесь не очень :).
И еще, un_named, можно по-подробнее, что такое BitBlt и StretchBlt и с чем их едят? Просто с графикой работаю не так давно, в основном БД... Спасибо.
18K
18 июня 2007 года
un_named
60 / / 24.04.2007
BitBit и StretchBit - это обычные функции Винды.
Их кушают с любым справочником ВинАпи, они применяются при отображении, а если нужно работать только с преобразованием файла рисунка без показа этого преобразования (, в каких-нибудь базах данных), то они скорее всего тебе не понадобятся.
8.2K
24 июня 2007 года
Pelican
115 / / 16.06.2007
Попробовал TImage32, да, компонент отличный, но он работает только с изображением, а мне нужно средство для работы непосредственно с файлами - изменять количество точек файла, а не отображаемого изображения. Ребят, помогите, очень нужно. Пришлите либо алгоритм, либо имя компонента. Нужно обработать BMP и JPG. Спасибо за внимание.
386
26 июня 2007 года
newcss
297 / / 05.04.2005
обработать файл значит его скачать... потом сохранить... Ну открыл картинку,преобразовал. сохранил.... полюбе для преобразования нужно скачивать файл. Хотя... Можешь работать напрямую с файлом и редактировать его побитно... но думаю это будет очень геморойно
92
26 июня 2007 года
Тень Пса
2.2K / / 19.10.2006
если тебе надо изменить размер "канвы" (а не самой картинки), то ТУПО создаешь новый битмап, такого размера которого тебе надо, а потом копируешь на него (куда тебе надо) старый битмап.
497
26 июня 2007 года
IL84
267 / / 24.04.2003
По идее человеку надо отмасштабировать картинку и сохранить ее в новом разрешении. Причем отмасштабировать как можно качественее, все эти штуки с копированием битмапов датут мешанину из пикселей, лишь отдаленно напоминающую исходное изображение. TImage32 позволяет корректно масштабировать и сохранять.

Про установку: качаешь архив с конпонентом, идешь в папку Packages и открываешь в своей IDE файл GR32_<версия_IDE>.dpk, дальше компилируешь и устанавливаешь.
92
26 июня 2007 года
Тень Пса
2.2K / / 19.10.2006
какая мешанина? каких пикселей? вы о чём? :))

Цитата:

Copies part of an image from another canvas into the canvas.

void __fastcall CopyRect(const TRect &Dest, TCanvas* Canvas, const TRect &Source);

я думаю сделать 2 штука TRect не составит труда :) но это конечно если надо увеличить размер канвы, а не самой картинки (как я уже говорил выше.)

PS: а теперь давайте дождемся ответа автора :D

PPS: да, для Пеликанов ) работать с канвой можно и не прорисовывая её, ну это так... промеждупрочим. ) ну а дальше TBitmap::SaveToFile() :)

8.2K
26 июня 2007 года
Pelican
115 / / 16.06.2007
Да, мне просто надо отмасштабировать картинку из одного файла ((не отображая нигде)) в заданном качестве и сохранить в иной файл.
С TImage32 разобрался, с файлами работает, но не корректно. Если вызвать метод Bitmap->SetSize(int,int), то масштабирование происходит, но картинка становится черной.
Подскажите, что еще нужно, чтобы картинка не была черной.
Спасибо.
ПС: С TRect не очень понятно, я пытался, но программа вылетала. Если можно, пришлите, пример работы с TRect ((основные функции, например, изменение размеров...)).
92
27 августа 2007 года
Тень Пса
2.2K / / 19.10.2006
 
Код:
TRect(0,0,10,10) // квадрат 10х10 начинающийся в 0,0. Можно юзать прям так, не создаваю новую переменную =)
8.2K
07 октября 2007 года
Pelican
115 / / 16.06.2007
Цитата: Тень Пса
какая мешанина? каких пикселей? вы о чём? :))

я думаю сделать 2 штука TRect не составит труда :) но это конечно если надо увеличить размер канвы, а не самой картинки (как я уже говорил выше.)

PS: а теперь давайте дождемся ответа автора :D

PPS: да, для Пеликанов ) работать с канвой можно и не прорисовывая её, ну это так... промеждупрочим. ) ну а дальше TBitmap::SaveToFile() :)



CopyRect премещает прямоугольную часть картинки на канву другой картинки, но не масштабирует изображение. А мне нужно из файла Original.jpg (Слева) получить файл Scaled.jpg (Справа). Жду ответов с нетерпением.

92
08 октября 2007 года
Тень Пса
2.2K / / 19.10.2006
TCanvas::StretchDraw
Цитата:

Draws the graphic specified by the Graphic parameter in the rectangle specified by the Rect parameter.

void __fastcall StretchDraw(const TRect &Rect, TGraphic* Graphic);

8.2K
11 ноября 2007 года
Pelican
115 / / 16.06.2007
Тень Пса: void __fastcall StretchDraw(const TRect &Rect, TGraphic* Graphic);

Да, эту функцию надо использовать. Отсюда вывод: Тень Пса->Reputation++

Но тема не закрыта! У меня, возможно, скоро еще вопрос созреет...
8.2K
07 декабря 2007 года
Pelican
115 / / 16.06.2007
А как определить, зная лишь абсолютный путь к файлу, JPEG он или нет, не по расширению, а именно по формату?
30K
07 декабря 2007 года
VerZer
15 / / 04.08.2007
Pelican
первые три(больше?) байта похожи на сведения о формате :)
8.2K
07 декабря 2007 года
Pelican
115 / / 16.06.2007
Как прочитать эти
Цитата:
первые три байта

?
Функцией read что ли?

1
08 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Pelican
Как прочитать эти ?
Функцией read что ли?


Здесь
Только для джпг, что бы с ним работать необходиом его предварительно разжать.

8.2K
12 декабря 2007 года
Pelican
115 / / 16.06.2007
м-да... Наверное, этот вопрос придется обработать через исключения.
1
12 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Pelican
м-да... Наверное, этот вопрос придется обработать через исключения.


Да не обязательно. Если необходимо просто считать заголовок - то вовсе не обязательно его распаковывать. Посмотри формат - и сделай так как в приведенной теме.

8.2K
13 декабря 2007 года
Pelican
115 / / 16.06.2007
Вот набросал код чтения сигнатуры файла, проверьте пожайлуста кому не лень :).
На форме находятся: 1 кнопка, 1 лейбл, 1 диалог открытия файла.
Мне кажется, что последний байт читается некорректно, когда проверил эту прогу на архиве rar, она вывела Rar.. (вместо 2-х точек подразумевается абракадабра), а всем известно, что сигнатура - Rar!
Хотя скорей всего это из-за того, что бинарные данные конвертируются в AnsiString...
Код:
//$$---- Form CPP ----
//---------------------------------------------------------------------------

#include <vcl.h>
#include <fstream.h>
#pragma hdrstop
#define BUFFER 3
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    char buffer[BUFFER];
    if (OpenDialog1->Execute()) {
        ifstream in(OpenDialog1->FileName.c_str(), ios::out ios::binary);
        if (in) {
            in.read(buffer, BUFFER);
            in.close();
            Label1->Caption=AnsiString(buffer);
        }
    }
}
//---------------------------------------------------------------------------


Добавлено: Пришлите, пожайлуста, оригинальную сигнатуру JPEG
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог