Fórum Image para image... #294012

01/09/2005

0

como faço para tranferir uma figura de um Image para outro image em outro form ? e tem como fazer com que a foto rode neste imagem? rodar tipo 90º 180º e etc...Flw....


Gigatel

Gigatel

Responder

Posts

01/09/2005

Martins

para transferir a imagem vc pode fazer assim, só não sei se é a prática correta:
  Image1.Picture:=Form1.Image1.Picture;


Quanto a rotação, tb tem, só q eu nunca utilizei por isso, não posso lhe ajudar nesse item, mas o pessoal aqui vai te dar uma força.


Espero q lhe ajude em algo.


Martins


Responder

Gostei + 0

01/09/2005

Adriano Santos

Quanto a rotação, tb tem, só q eu nunca utilizei por isso, não posso lhe ajudar nesse item, mas o pessoal aqui vai te dar uma força.


Amigo, no link abaixo tem um exemplo. O cara criou um novo arquivo DCU com as opções que precisa, mas não disponibilizou os fontes. Teoricamente é só copiar o jpeg.dcu que acompanha o ZIP para o diretorio Lib do Delphi e rodar o programa, mas não consegui fazer funcionar.

Testei o executavel compilado que o cara manda no download e funciona perfeito, só descobrir o q tem que fazer para compilar no delphi.

[url=http://codecentral.borland.com/Item.aspx?id=19723]Code Central - JPEG Avançada[/url]


Responder

Gostei + 0

01/09/2005

Martins

É isso aí [b:ebec68980f]Adriano[/b:ebec68980f], e vou baixar esse negócio aí tb, vou dar uma olhada nela

valew!!!


Responder

Gostei + 0

01/09/2005

Adriano Santos

É isso aí [b:6d94852ec8]Adriano[/b:6d94852ec8], e vou baixar esse negócio aí tb, vou dar uma olhada nela valew!!!


O Exemplo é bem loko cara, mas não consegui fazer compilar, mesmo sobrepondo o arquivo jpeg.dcu no diretorio lib do delphi ou msm deixando ele no diretorio da aplicacao.

Se conseguir cara dá um toque pra gente.


Responder

Gostei + 0

01/09/2005

Gigatel

parece que tem que cadastrar..num tem outro link naum ?


Responder

Gostei + 0

01/09/2005

Gigatel

Dá uma olhada neste código..


with Image1.Picture.Graphic do
Canvas.CopyRect(Canvas.ClipRect, Canvas, Rect(0, Height - 1, Width, -1));



Quase dá certo..

Veja este..



with Image1.Picture.Bitmap do
Canvas.CopyRect(Canvas.ClipRect, Canvas, Rect(Width-1, 0, -1, Height));
end;




a imagem fica meio torta..


Responder

Gostei + 0

01/09/2005

Adriano Santos

parece que tem que cadastrar..num tem outro link naum ?


Ah é o CodeCentral da Borland, precisa de cadastro mesmo. É que aqui os cookies estão gravados e pra mim entra direto.

Bom, coloquei o exemplo no meu FTP, pegai galera.

[url=http://www.doiscliques.com/pub/jpegavancada.zip]JPEG[/url]


Responder

Gostei + 0

01/09/2005

Gigatel

valeu...vou dar uma olhada...


Responder

Gostei + 0

01/09/2005

Martins

Olá pessoal!!

É o seguinte eu compilei o bixo e ainda fiz um exemplo de quebra.

vou dizer aqui o q tem q ser feito.

1 - vcs tem q copiar para a pasta LIB do Delphi somente a DCU [b:90a7b4e9c1]´jpegex.dcu´[/b:90a7b4e9c1], pq a jpeg q tem junto é uma cópia dessa, e se vc sobrepor a q tem lá nativa do delphi, vc vai ver q algumas coisas q a original do delphi tem essa não tem, então vc tem q deixar ela lá quietinha e levar somente a [b:90a7b4e9c1]jpegex.dcu[/b:90a7b4e9c1], feito isso, declare na uses tanto jpeg quanto jpegex. Ok!

Vamos ao exemplo q fiz:

1 - ComboBox;
1 - OpenPictureDialog;
1 - SavePictureDialog;
2 - Botões;
1 - Image;

vamos aos códigos:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    cbTrans: TComboBox;
    OpenPictureDialog1: TOpenPictureDialog;
    BitBtn1: TBitBtn;
    SavePictureDialog1: TSavePictureDialog;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
 private
    { Private declarations }
    FRect : TRect;
    FMarking : boolean;
    FJpeg : TJPEGImage;
    FCanvas : TCanvas;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses
  TypInfo,
  Types;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if FJpeg = nil then exit;
   FJpeg.Transform(TJpegTransform(cbTrans.ItemIndex));
   FRect := Rect(-1,-1,0,0);
end;

type
  TGraphicControlAccess = class(TGraphicControl);

procedure TForm1.FormCreate(Sender: TObject);
var T : TJpegTransform;
begin
  cbTrans.Clear;
  for T := low(TJpegTransform) to High(TJpegTransform) do
    cbTrans.Items.Add(GetEnumName(TypeInfo(TJpegTransform), Integer(T)));
  cbTrans.ItemIndex := 0;
  FCanvas := TGraphicControlAccess(Image1).Canvas;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  B : TBitmap;
begin
  if not OpenPictureDialog1.Execute then exit;
  SavePictureDialog1.FileName := OpenPictureDialog1.FileName;
  Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  Caption := OpenPictureDialog1.FileName;
  if Image1.Picture.Graphic is TJPEGImage then
    FJpeg := TJPEGImage(Image1.Picture.Graphic)
  else
    FJpeg := nil;

  if FJpeg <> nil then
  begin
    FJpeg.Performance := jpBestSpeed;
    //FJpeg.Scale := jsEighth;

    //test post CMYK to RGB
    if false then
    begin
      FJpeg.AutoCMYKToRGB := false; // don´t convert to RGB
      B := TBitmap.Create;
      B.Assign(FJpeg);
      jpegex.BitmapCMYKToRGB(B, true);
      Image1.Picture.Bitmap.Assign(B);
      B.Free;
      FJpeg := nil;
    end;
  end;
  FRect := Rect(-1,-1,0,0);
end;

end.


É isso aí, qualquer coisa postem aqui.

espero ter ajudado.

Martins


Responder

Gostei + 0

01/09/2005

Adriano Santos

Ae, o [b:c8fadff83c]Martins[/b:c8fadff83c] matou a pau.

Fiz o exemplo galera e funciona direitinho.
É isso ai, mandou bem cara.

abraço


Responder

Gostei + 0

01/09/2005

Gigatel

Ôooooooooooo Menino Bão....sô
Valeu....


Responder

Gostei + 0

01/09/2005

Martins

[quote:51e837dcc3=´Adriano Santos´]Ae, o [b:51e837dcc3]Martins[/b:51e837dcc3] matou a pau.

Fiz o exemplo galera e funciona direitinho.
É isso ai, mandou bem cara.

abraço[/quote:51e837dcc3]
Q nada galera!!!! :oops:

Qualquer coisa estamos aqui, é só postar q, se estiver ao nosso alcance, tentaremos aprender com vcs.

Valew!!!!


Martins


Responder

Gostei + 0

01/09/2005

Gigatel

está dando este erro,....

[Error] Unit29.pas(121): Statement expected but ´TYPE´ found


eu fiz igual no código acima..o que será que deu errado ?


Responder

Gostei + 0

01/09/2005

Gigatel

Desculpe foi vacilada mesmo...más tenho uma dúvida como eu faria para modificar 2 coisas...
1º) eliminar o esquema do combobox....ficar direto no botão..no caso o giro de 90º
2º) minha fonte da imagem vem direto de um banco de dados...
como faço o procedimento em outro form como adaptaria para esta função ?
  Image1.Picture:=Form1.Image1.Picture; 


Valew,...de novo..


Responder

Gostei + 0

01/09/2005

Adriano Santos

1º) eliminar o esquema do combobox....ficar direto no botão..no caso o giro de 90º


Baseado no exemplo do Martins:
  if FJpeg = nil then exit;
  FJpeg.Transform(TJpegTransform(jt_ROT_90));
  FRect := Rect(-1, -1, 0, 0);


2º) minha fonte da imagem vem direto de um banco de dados... como faço o procedimento em outro form como adaptaria para esta função ?
  Image1.Picture:=Form1.Image1.Picture; 


Você pode usar um TDbImage vinculado direto ao campo da sua tabela no BD. Ou ainda fazer algo como:

procedure TForm1.Button2Click(Sender: TObject);
var
  B: TBitmap;
begin
  if not OpenPictureDialog1.Execute then exit;
  SavePictureDialog1.FileName := OpenPictureDialog1.FileName;
  DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  FJpeg := TJPEGImage(DBImage1.Picture.Graphic);
  if FJpeg <> nil then
  begin
    FJpeg.Performance := jpBestSpeed;
    //test post CMYK to RGB
    if false then
    begin
      FJpeg.AutoCMYKToRGB := false; // don´t convert to RGB
      B := TBitmap.Create;
      B.Assign(FJpeg);
      jpegex.BitmapCMYKToRGB(B, true);
      DbImage1.Picture.Bitmap.Assign(B);
      B.Free;
      FJpeg := nil;
    end;
  end;
  FRect := Rect(-1, -1, 0, 0);
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar