Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2009, 13:46   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Увеличение размера изображения на 34% после сохранения в D7

Имеется 2 одинаковых изображения:
1. (на схеме красное) - Оригинал
2. (на схеме зеленое) - Сохраненное из D7 посредством Picture.SaveToFile()

Сразу бросается в глаза разность размеров. Откуда взялись лишние 6 МБ???

P.S. Оригинал в 24-разряде. Разрядность больше этой я не знаю.

P.S.S. Картинка в вложении пересохранена на 256 цвет, а то выходило больше 1 мб.
Изображения
Тип файла: jpg 2.jpg (47.8 Кб, 143 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 17.08.2009, 14:21   #2
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

А Вы ничего не перепутали? При сохранении 24-разрядного рисунка в 256- цветный размер вобще то уменьшается примерно в три раза (с некоторой потерей качества).
Извиняюсь за невнимательность, не учел
Цитата:
Сохраненное из D7 посредством Picture.SaveToFile()
.
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 17.08.2009 в 14:26.
DeKot вне форума Ответить с цитированием
Старый 17.08.2009, 14:27   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

попробовал в D2007 рис БМП 2048*1536 размер одинаковый
SERG1980 вне форума Ответить с цитированием
Старый 17.08.2009, 14:28   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

DeKot Неее, картинка во ВЛОЖЕНИИ (которую сбросил на форум) переснята на 256, чтоб легче было другим смотреть, а картинки о которых я веду речь лежат в папке на компьютере, но из-за их о_О размера я не могу их сбросить.

SERG1980, я так понимаю что бы не менялось с содержанием, картинки должны весить одинаково? Это ведь бмп, там каждый пиксель отдельно?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 17.08.2009, 15:07   #5
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Да я уже все понял.
Пробовал в D7 - все совпадает.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Image1: TImage;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Form1.Image1.Picture.LoadFromFile('Ris24.bmp');
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  Form1.Image1.Picture.SaveToFile('RisSave.bmp');
end;

end.
Возможно проблема в большом размере файла.
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 17.08.2009 в 15:09.
DeKot вне форума Ответить с цитированием
Старый 17.08.2009, 15:16   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А может заключаться проблема в том, что в программе меняю пиксели цвет по каналам которых не кратен 4.
(Например 255.0.255 => 252.0.252
64.23.65 => 64.20.64)?
Хотя думаю, что нет. Ведь каждий пиксель все равно кодируется по 24.

-----------------------------------------

DeKot, попробовал Ваш вариант, размер действительно соответствует. Значит дело в изменении пикселов, что по теории быть не должно.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 17.08.2009 в 15:20. Причина: Попробовал и дописал
Alex Cones вне форума Ответить с цитированием
Старый 17.08.2009, 16:09   #7
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Странно.....
А можно посмотреть сами файлы?

А может оно просто 32-битным сохранилось?
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 17.08.2009 в 16:11.
DomiNick вне форума Ответить с цитированием
Старый 17.08.2009, 16:31   #8
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Что бы сбросить сами файлы хотя бы на народ мне потребуется около часа на полной скорости, а сейчас качаю фильм.
32-х битный??? Что-то новенькое. Это как? Если это правда, то можно ли как -то заставить дельфю сохранять именно в определенной битности?

P.S. Возникает страшная мысль, что это страшный вирус, прячущий свои exe-шники в картинки. Тьфу-тьфу-тьфу.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 17.08.2009 в 16:33.
Alex Cones вне форума Ответить с цитированием
Старый 17.08.2009, 16:33   #9
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
32-х битный??? Что-то новенькое. Это как?
Это с полупрозрачностью... =))
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 17.08.2009, 16:48   #10
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

о_О Дельфи сохраняет BMP с полупрозрачностью??? Что-то необяснимое и невероятное. Хотя чем еще объяснить увеличение размеров файла.
Что-бы не ходило слухов о том, что я изобрел полупрозрачность в БМП, выкладываю код:
Код:
N:=StrToInt(Edit1.Text);

{For N:=255 downto 2 do
Begin}

 Bit:=TBitMap.Create;
 Bit.LoadFromFile('D:\A-MIND\Utils\Archiver\Resource\Main.bmp');
 Bit2:=TBitMap.Create;
 Bit2.LoadFromFile('D:\A-MIND\Utils\Archiver\Resource\Main.bmp');
 Windows.Beep(700,700);
 For Y:=0 to 8399 do
  For X:=0 to 749 do
   Begin
    C:=Bit2.Canvas.Pixels[X,Y];
    CHex:=IntToHex(C,1);
    CHex:=StringOfChar('0',6-Length(CHex))+CHex;
    SFD:=Copy(CHex,1,2);
    SSD:=Copy(CHex,3,2);
    STD:=Copy(CHex,5,2);
    CHex:='';
    FD:=StrToInt('$'+SFD);
    SD:=StrToInt('$'+SSD);
    TD:=StrToInt('$'+STD);
    If (FD mod N <> 0) Then FD:=FD-(FD mod N);
    If (SD mod N <> 0) Then SD:=SD-(SD mod N);
    If (TD mod N <> 0) Then TD:=TD-(TD mod N);
    SFD:=IntToHex(FD,2);
    SSD:=IntToHex(SD,2);
    STD:=IntToHex(TD,2);
    C:=StrToInt('$'+SFD+SSD+STD);
    Bit.Canvas.Pixels[X,Y]:=C;
    If Y mod 100 =0 Then
     Begin
      Edit1.Text:=IntToStr(Y);
      Edit1.Refresh;
     End;
   End;
   Windows.Beep(700,700);
 {Image1.Canvas.Draw(0,0,Bit2); }
 Image2.Canvas.Draw(0,0,Bit);
 Edit1.Text:=IntToStr(N);
 Edit1.Refresh;
 Image2.Refresh;
 Image2.Picture.SaveToFile('MainFC.bmp');
Поясняю, если сложно разобраться. Код считывает из эдита шаг (коэффицент сокращения N), и если канал света не делится на N без остатка изменяет до соответствующего значения. Код служит для уменьшения информационного объема изображения.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 17.08.2009 в 16:52.
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменения размера изображения в Image BredoZavR Мультимедиа в Delphi 0 02.07.2009 13:30
Увеличение изображения. Fellics{новичок} Помощь студентам 8 08.03.2009 12:30
Сохранения файла после передачи albatros Работа с сетью в Delphi 2 26.12.2008 21:07
Макрос сохранения после печати lala_white Microsoft Office Word 2 10.08.2008 12:50
Увеличение размера поля kayman Общие вопросы Delphi 6 16.10.2007 22:35