Модератор: Модераторы

Лекс Айрин писал(а):Alex2013, а ты вообще осознаешь, что такое raw? Я лично вот удивлен, что его можно использовать для любого файла. Хотя, скорее всего, это не оригинальный raw, а просто представление картинки в виде байтового массива. Изначально это набор данных во внутреннем представлении цифрового фотоаппарата. Поэтому люди и стараются не использовать его. Ибо неизвестно что будет если там что-то тронешь.
 https://www.youtube.com/watch?v=Jv4-80f7kt4  https://www.youtube.com/watch?v=q4JY05hcU5E  https://www.youtube.com/watch?v=NVrZuSYDVVg&t=114s
  https://www.youtube.com/watch?v=Jv4-80f7kt4  https://www.youtube.com/watch?v=q4JY05hcU5E  https://www.youtube.com/watch?v=NVrZuSYDVVg&t=114s 

 и ты не понял в чем дело ... Суть возможности обращается к изображению как куску памяти а не как двухмерной  матрице  точек... (Причем ладно бы через обычный массив с динамической метрикой так не же .... в Canvas.Pixels обращение идет через GUI-шные SetPixel/GetPixel угу угу к куску своей же памяти (кстати "аппаратно привязанные" битмапы и битмапы  Лазаруса это почти "совершенно разные сущности"  например чтобы что-то нарисовать на битмапе через  OpenGl нужно провести для TBimap "капитальный ремонт" тоже касается  и якобы "стандартного" битмапа для захвата кадров с вебкамеры     ) )
 и ты не понял в чем дело ... Суть возможности обращается к изображению как куску памяти а не как двухмерной  матрице  точек... (Причем ладно бы через обычный массив с динамической метрикой так не же .... в Canvas.Pixels обращение идет через GUI-шные SetPixel/GetPixel угу угу к куску своей же памяти (кстати "аппаратно привязанные" битмапы и битмапы  Лазаруса это почти "совершенно разные сущности"  например чтобы что-то нарисовать на битмапе через  OpenGl нужно провести для TBimap "капитальный ремонт" тоже касается  и якобы "стандартного" битмапа для захвата кадров с вебкамеры     ) ) )
  )
 Причем тут паскаль ! Даже в дельфи и библиотеке Кол прямой доступ к данным битмапа устроен легче чем LCL.   Но опять-же не это не суть как важно потому что  доступ все-же есть ... Но глядя на простыни кода применением  Canvas.Pixels даже только  на этом форуме становится как минимум СТРАННО  что многие годы никто почему-то об этом не подозревал .
   Причем тут паскаль ! Даже в дельфи и библиотеке Кол прямой доступ к данным битмапа устроен легче чем LCL.   Но опять-же не это не суть как важно потому что  доступ все-же есть ... Но глядя на простыни кода применением  Canvas.Pixels даже только  на этом форуме становится как минимум СТРАННО  что многие годы никто почему-то об этом не подозревал .    
  
 AutoWinY0_002.7z
 AutoWinY0_002.7z    (Перезалил на ЯД)
(Перезалил на ЯД)

 был именно там .
  был именно там .   : Утилиту определенно нужно доработать...
  : Утилиту определенно нужно доработать...  
 )
   )Лекс Айрин писал(а):Блокировка нужна потому что работа идёт с битовым представлением
Alex2013 писал(а):Возможно в этом высший есть какой-то "высший смысл" но что мешает сделать стандартную альтернативу непонятно

 
 Function CompareBMP (B1,B2:TBitmap):Bool;
begin
  Result:=False;
If (B1<> Nil) and (B2<> Nil) and  (B1.RawImage.DataSize>0) and (B2.RawImage.DataSize>0) then
Result:=( CompareByte(B1.RawImage.Data^,b2.RawImage.Data^,b1.RawImage.DataSize) = 0);
end;
procedure TSCForm1.Timer1Timer(Sender: TObject);
  var
   MyBitmap : TBitmap;
   ScreenDC : HDC;
   R:TRect;
 begin
   MyBitmap:=TBitmap.Create;
   ScreenDC:=GetDC(0); MyBitmap.LoadFromDevice(ScreenDC);
   R:=Rect(0,0,MyBitmap.Width,self.TrackBar1.Position);
   With  Image1.Picture.Bitmap do  
      begin  SetSize(r.Width,r.Height);  Canvas.CopyRect(r, MyBitmap.Canvas,r);  end;
 MyBitmap.Free; 
 Shape2.hide;
   if  CheckBox1.Checked And
    CompareBMP(Image1.Picture.Bitmap,Image2.Picture.Bitmap) then
    begin
      Shape2.Show;
      KeyInput.Down(vk_LWin);
      KeyInput.Press(vk_Y);
      KeyInput.Up(vk_LWin);
    end
 end;
 ) Да возможно было бы быстрее,но код скорее всего получился бы сложнее и как минимум менее очевидным. К тому-же скорость в данном случае не особо важна ... Да, это "самоочевидное решение в лоб" но функцию выполняет а написано и отлажено за час (и то по причине  упомянутого поиска "готовых решений" и копания в своем же старом коде (где я и выудил CompareByte) )  так что q.e.d.
  ) Да возможно было бы быстрее,но код скорее всего получился бы сложнее и как минимум менее очевидным. К тому-же скорость в данном случае не особо важна ... Да, это "самоочевидное решение в лоб" но функцию выполняет а написано и отлажено за час (и то по причине  упомянутого поиска "готовых решений" и копания в своем же старом коде (где я и выудил CompareByte) )  так что q.e.d.    

 )  С точки зрения простого рисования примитивами это реально очень удобная  и достаточно быстрая  "надстройка". (Особенно если учитывать возможность использования метафайлов Кстати Канвас это не просто оболочка GUI или  GDI ... ) Но вот "Пиксельная матрица" это реальный "медленный кошмар" даже  на чтение.
 )  С точки зрения простого рисования примитивами это реально очень удобная  и достаточно быстрая  "надстройка". (Особенно если учитывать возможность использования метафайлов Кстати Канвас это не просто оболочка GUI или  GDI ... ) Но вот "Пиксельная матрица" это реальный "медленный кошмар" даже  на чтение.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1