Ładowanie JPG do BITMAP

0

Witam,

Wiem jak zrobić ładowanie z podanej ścieżki:

 bmp := TBitmap.Create;
 bmp.LoadFromFile('C:\2.bmp');
 img.Picture.Bitmap.Assign(bmp);

Jednak chciałbym żeby obrazki mógł ładować z OpenPictureDialog1

Próbowałem tak:

 bmp := TBitmap.Create;
 bmp.LoadFromFile(OpenPictureDialog1.FileName);
 img.Picture.Bitmap.Assign(bmp);

Jednakże nie da się załadować wywala błąd. Podejrzewam przez to że inne formaty mogą się załadować.

Jak zrobić żeby to Bitmap'y ładowały się obrazki JPG za pomocą OpenPictureDialog.

Help

0
if OpenPictureDialog1.Execute then  // trzeba wczesniej ten dialog wywolac :> 
  begin
    bmp := TBitmap.Create;
    bmp.LoadFromFile(OpenPictureDialog1.FileName);
    img.Picture.Bitmap.Assign(bmp);
  end;

Każdy dialog ma właściwość Filter, tam ustalasz co ma być wyświetlane. Dla samych bmp podajesz odpowiedznio:

Filter Name = Bitmp(*.bmp)   to akurat tylko nazwa, więc może być dowolna
Filter = *.bmp

Ale to nie zabezpieczy Cię przed wpisaniem z palca innego pliku. Zabezpieczy Cię to:

if UpperCase(ExtractFileExt(OpenPictureDialog1.FileName)) = '.BMP' then
if OpenPictureDialog1.Execute then  
  if UpperCase(ExtractFileExt(OpenPictureDialog1.FileName)) = '.BMP' then
    begin
      bmp := TBitmap.Create;
      bmp.LoadFromFile(OpenPictureDialog1.FileName);
      img.Picture.Bitmap.Assign(bmp);
    end;
0
  1. Jeżeli chcesz ładować obrazki JPG to w sekcji uses dopisz Jpeg
  2. Jeżeli img jest typu TImage to obrazek ładujemy img.Picture.LoadFromFile(NazwaPliku)
0

Loloki źle mnie zrozumiałeś. Właśnie ja chcę tylko *.jpg załadować do Bitmap a nie bmp.

Już mam dodane do uses ale nie wiem jak załadować plik jpg do Bitmapy ;)

0

Po co chcesz ładować plik jpg do Bitmapy? Załaduj do TImage i od razu ci się wyświetli.

0

No tak ale później jest mi potrzebny Bitmap.

Ja ładuje do Image1 i od razu tworzę Bitmap i tam walę obrazek i wykonuje już moje pozostałe elementy które ja chcę.

Czyli najprościej mówiąc jak muszę zrobić

  • ładowanie do Image1
  • przeładowanie z Image1 do Bitmap
  • wykoanie kilka czynności na Bitmap

Wszystko to co chce działa tylko że z formatem *.bmp a ja chcę także z *.jpg :)

Help ;D

0
PomóżcieMi napisał(a)

Witam,

Wiem jak zrobić ładowanie z podanej ścieżki:

 bmp := TBitmap.Create;
 bmp.LoadFromFile('C:\2.bmp');
 img.Picture.Bitmap.Assign(bmp);

Jednak chciałbym żeby obrazki mógł ładować z OpenPictureDialog1

Ściągnij i dodaj do uses projektu moduł "GraphicEx," a do libraries dodaj katalog z rozpakowanymi plikami. (GraphicEx.pas, GraphicCompression.pas itd). Będziesz mógł wczytywać kilkanaście formatów, w tym jpg.

tutaj moduł GraphicEx
http://www.soft-gems.net/index.php?option=com_content&task=view&id=13&Itemid=33

tutaj przykład uzycia:
(na formę wrzuć image1, openpicturedialog i button1)

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    OpenPictureDialog1: TOpenPictureDialog;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   if OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

end.
0

entek ja do Image mogę wczytywać wszystkie formaty ale nie mogę już tak jakby przerzucić z Image do Bitmap'y :(

0

Konkretnie zależy mi żeby z Image do Bitmapy przeszedł mi format *.jpg

0

user image

Mam taką procedurę:

if OpenPictureDialog1.Execute then Img.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  begin
    bmp := TBitmap.Create;
    bmp.LoadFromFile(OpenPictureDialog1.FileName);
    img.Picture.Bitmap.Assign(bmp);
0

Nie bardzo Cię zrozumiałem. Jak tylko jpgi chcesz to masz tu poniżej:

var
  ex:AnsiString;
...
if OpenPictureDialog1.Execute then 
  begin
    ex := UpperCase(ExtractFileExt(OpenPictureDialog1.FileName));
    if (ex = '.JPG') or (ex = '.JPEG') then
      begin
        jpg := TJPEGImage.Create;
        bmp := TBitmap.Create;
        jpg.LoadFromFile(OpenPictureDialog1.FileName);
        bmp.Assign(jpg);
        img.Picture.Bitmap.Assign(bmp);
        jpg.Free;
      end;
  end;

Ot całe przeróbki :>

Jeśli jpg lub bmp

var
  ex:AnsiString;
...
if OpenPictureDialog1.Execute then 
  begin
    ex := UpperCase(ExtractFileExt(OpenPictureDialog1.FileName));
    if (ex = '.JPG') or (ex = '.JPEG') then
      begin
        jpg := TJPEGImage.Create;
        jpg.LoadFromFile(OpenPictureDialog1.FileName);
        bmp := TBitmap.Create;
        bmp.Assign(jpg);
        jpg.Free;
      end;
    if (ex = '.BMP') then
      begin
        bmp := TBitmap.Create;
        bmp.LoadFromFile(OpenPictureDialog1.FileName);
      end;
    img.Picture.Bitmap.Assign(bmp);
  end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1