Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi Jpeg resmin çözünürlüğünü değiştirmek
#1
Delphi programında jpeg resimleri kaydettirdiğim klasöre standart 1500x1125 çözünürlüğünde yaptırabilirmiyim acaba.Yardımcı olurmusunuz
Cevapla
#2
1- Yeni bir uygulama oluşturun.
2- Formun üzerine birer adet button, image ve OpenDialog yerleştirin.
3- Image Stretch özelliğini True yapın (isteğe bağlı, resmi çerçeve sığdıracaktır).
4- Aşağıdaki metod ile bir resim seçin.
5- Resmi seçtiğiniz anda seçtiğiniz dizine 1500x1125 ebadında yeni bir jpg resmi üretecektir.
procedure TForm1.Button1Click(Sender: TObject);
const
 imgW = 1500;
 imgH = 1125;
var
 imgBMP: TBitmap;
 imgJPG: TJPEGImage;
 Uyumsuz: boolean;
 imgBoyut: Double;
 posSolUst, posUst, posSagAlt, posAlt: integer;
 strYol: String;
begin
 if OpenDialog1.Execute then
 begin
   imgJPG := TJPEGImage.Create;
   Uyumsuz := false;
   try
     imgJPG.LoadFromFile(OpenDialog1.FileName);
     if (imgJPG.Height >= imgJPG.Width) AND (imgH <= imgJPG.Height) then
     begin
       imgBoyut := imgW / imgJPG.Height;
     end
     else if (imgJPG.Height <= imgJPG.Width) AND (imgW <= imgJPG.Width) then
     begin
       imgBoyut := imgH / imgJPG.Width;
     end
     else
     begin
       Uyumsuz := true;
     end;
     imgBMP := TBitmap.Create;
     try
       imgBMP.SetSize(imgW, imgH);
       if not Uyumsuz then
       begin
         posSolUst := (imgW - Round(imgJPG.Width * imgBoyut)) div 2;
         posUst := (imgH - Round(imgJPG.Height * imgBoyut)) div 2;
         posSagAlt := Round(imgJPG.Width * imgBoyut) + posSolUst;
         posAlt := Round(imgJPG.Height * imgBoyut) + posUst;
         imgBMP.Canvas.StretchDraw(Rect(posSolUst, posUst, posSagAlt, posAlt), imgJPG);
       end
       else
       begin
         posSolUst := (imgW - imgJPG.Width) div 2;
         posUst := (imgH - imgJPG.Height) div 2;
         posSagAlt := imgJPG.Width + posSolUst;
         posAlt := imgJPG.Height + posUst;
         imgBMP.Canvas.StretchDraw(Rect(posSolUst, posUst, posSagAlt, posAlt), imgJPG);
       end;
       Image1.Picture.Assign(imgBMP);
       imgJPG.Assign(imgBMP);
       imgJPG.SaveToFile(Format('%s_%sx%s.jpg', [OpenDialog1.FileName, imgW.ToString, imgH.ToString]));
     finally
       imgBMP.free;
     end;
   finally
     imgJPG.free;
   end;
 end;
end;


Not: Uses bölümüne Vcl.Imaging.jpeg ekleyin.
Begin : = end / 2;
Cevapla
#3
@RAD Coder hocamız Delphi çözümünü verdiği için ekliyorum yoksa yazmayacaktım, bu ve benzeri (tırnak içinde söylüyorum) "angarya" işlemleri hep Python'a yaptırırım  Smile
from PIL import Image

image = Image.open('image.jpg')
new_image = image.resize((1500, 1125))
new_image.save('resize_image.jpg')

Pillow kütüphanesi dışında OpenCV (cv2) de var tabi.
Cevapla
#4
FMX tarafında bu iş daha da kolay; tek satırda çözülüyor. Wink  
imgBMP.Resize(1500, 1125);
Begin : = end / 2;
Cevapla
#5
(09-02-2022, Saat: 13:41)RAD Coder Adlı Kullanıcıdan Alıntı: 1- Yeni bir uygulama oluşturun.
2- Formun üzerine birer adet button, image ve OpenDialog yerleştirin.
3- Image Stretch özelliğini True yapın (isteğe bağlı, resmi çerçeve sığdıracaktır).
4- Aşağıdaki metod ile bir resim seçin.
5- Resmi seçtiğiniz anda seçtiğiniz dizine 1500x1125 ebadında yeni bir jpg resmi üretecektir.
procedure TForm1.Button1Click(Sender: TObject);
const
 imgW = 1500;
 imgH = 1125;
var
 imgBMP: TBitmap;
 imgJPG: TJPEGImage;
 Uyumsuz: boolean;
 imgBoyut: Double;
 posSolUst, posUst, posSagAlt, posAlt: integer;
 strYol: String;
begin
 if OpenDialog1.Execute then
 begin
   imgJPG := TJPEGImage.Create;
   Uyumsuz := false;
   try
     imgJPG.LoadFromFile(OpenDialog1.FileName);
     if (imgJPG.Height >= imgJPG.Width) AND (imgH <= imgJPG.Height) then
     begin
       imgBoyut := imgW / imgJPG.Height;
     end
     else if (imgJPG.Height <= imgJPG.Width) AND (imgW <= imgJPG.Width) then
     begin
       imgBoyut := imgH / imgJPG.Width;
     end
     else
     begin
       Uyumsuz := true;
     end;
     imgBMP := TBitmap.Create;
     try
       imgBMP.SetSize(imgW, imgH);
       if not Uyumsuz then
       begin
         posSolUst := (imgW - Round(imgJPG.Width * imgBoyut)) div 2;
         posUst := (imgH - Round(imgJPG.Height * imgBoyut)) div 2;
         posSagAlt := Round(imgJPG.Width * imgBoyut) + posSolUst;
         posAlt := Round(imgJPG.Height * imgBoyut) + posUst;
         imgBMP.Canvas.StretchDraw(Rect(posSolUst, posUst, posSagAlt, posAlt), imgJPG);
       end
       else
       begin
         posSolUst := (imgW - imgJPG.Width) div 2;
         posUst := (imgH - imgJPG.Height) div 2;
         posSagAlt := imgJPG.Width + posSolUst;
         posAlt := imgJPG.Height + posUst;
         imgBMP.Canvas.StretchDraw(Rect(posSolUst, posUst, posSagAlt, posAlt), imgJPG);
       end;
       Image1.Picture.Assign(imgBMP);
       imgJPG.Assign(imgBMP);
       imgJPG.SaveToFile(Format('%s_%sx%s.jpg', [OpenDialog1.FileName, imgW.ToString, imgH.ToString]));
     finally
       imgBMP.free;
     end;
   finally
     imgJPG.free;
   end;
 end;
end;


Not: Uses bölümüne Vcl.Imaging.jpeg ekleyin.

Tşk ederim hocam

(09-02-2022, Saat: 13:49)Hayati Adlı Kullanıcıdan Alıntı: @RAD Coder hocamız Delphi çözümünü verdiği için ekliyorum yoksa yazmayacaktım, bu ve benzeri (tırnak içinde söylüyorum) "angarya" işlemleri hep Python'a yaptırırım  Smile
from PIL import Image

image = Image.open('image.jpg')
new_image = image.resize((1500, 1125))
new_image.save('resize_image.jpg')

Pillow kütüphanesi dışında OpenCV (cv2) de var tabi.

tşk ederim.
Cevapla
#6
(09-02-2022, Saat: 14:00)RAD Coder Adlı Kullanıcıdan Alıntı: FMX tarafında bu iş daha da kolay; tek satırda çözülüyor.  Wink  
imgBMP.Resize(1500, 1125);

Delphime laf söyletmem diyorsunuz yani Smile
Cevapla
#7
(09-02-2022, Saat: 14:14)Hayati Adlı Kullanıcıdan Alıntı:
(09-02-2022, Saat: 14:00)RAD Coder Adlı Kullanıcıdan Alıntı: FMX tarafında bu iş daha da kolay; tek satırda çözülüyor.  Wink  
imgBMP.Resize(1500, 1125);

Delphime laf söyletmem diyorsunuz yani Smile

Yani!
Onlar çoğu metodu Delphi gibi köklü ve güvenilir dillerden klonluyor.
Begin : = end / 2;
Cevapla
#8
(09-02-2022, Saat: 13:41)RAD Coder Adlı Kullanıcıdan Alıntı: 1- Yeni bir uygulama oluşturun.
2- Formun üzerine birer adet button, image ve OpenDialog yerleştirin.
3- Image Stretch özelliğini True yapın (isteğe bağlı, resmi çerçeve sığdıracaktır).
4- Aşağıdaki metod ile bir resim seçin.
5- Resmi seçtiğiniz anda seçtiğiniz dizine 1500x1125 ebadında yeni bir jpg resmi üretecektir.
procedure TForm1.Button1Click(Sender: TObject);
const
 imgW = 1500;
 imgH = 1125;
var
 imgBMP: TBitmap;
 imgJPG: TJPEGImage;
 Uyumsuz: boolean;
 imgBoyut: Double;
 posSolUst, posUst, posSagAlt, posAlt: integer;
 strYol: String;
begin
 if OpenDialog1.Execute then
 begin
   imgJPG := TJPEGImage.Create;
   Uyumsuz := false;
   try
     imgJPG.LoadFromFile(OpenDialog1.FileName);
     if (imgJPG.Height >= imgJPG.Width) AND (imgH <= imgJPG.Height) then
     begin
       imgBoyut := imgW / imgJPG.Height;
     end
     else if (imgJPG.Height <= imgJPG.Width) AND (imgW <= imgJPG.Width) then
     begin
       imgBoyut := imgH / imgJPG.Width;
     end
     else
     begin
       Uyumsuz := true;
     end;
     imgBMP := TBitmap.Create;
     try
       imgBMP.SetSize(imgW, imgH);
       if not Uyumsuz then
       begin
         posSolUst := (imgW - Round(imgJPG.Width * imgBoyut)) div 2;
         posUst := (imgH - Round(imgJPG.Height * imgBoyut)) div 2;
         posSagAlt := Round(imgJPG.Width * imgBoyut) + posSolUst;
         posAlt := Round(imgJPG.Height * imgBoyut) + posUst;
         imgBMP.Canvas.StretchDraw(Rect(posSolUst, posUst, posSagAlt, posAlt), imgJPG);
       end
       else
       begin
         posSolUst := (imgW - imgJPG.Width) div 2;
         posUst := (imgH - imgJPG.Height) div 2;
         posSagAlt := imgJPG.Width + posSolUst;
         posAlt := imgJPG.Height + posUst;
         imgBMP.Canvas.StretchDraw(Rect(posSolUst, posUst, posSagAlt, posAlt), imgJPG);
       end;
       Image1.Picture.Assign(imgBMP);
       imgJPG.Assign(imgBMP);
       imgJPG.SaveToFile(Format('%s_%sx%s.jpg', [OpenDialog1.FileName, imgW.ToString, imgH.ToString]));
     finally
       imgBMP.free;
     end;
   finally
     imgJPG.free;
   end;
 end;
end;


Not: Uses bölümüne Vcl.Imaging.jpeg ekleyin.

hocam componetini alabilirmiyim

Hocam delphi 7 kullanıyorum component sorunu var
Cevapla
#9
(09-02-2022, Saat: 14:28)Blacklord Adlı Kullanıcıdan Alıntı:
(09-02-2022, Saat: 13:41)RAD Coder Adlı Kullanıcıdan Alıntı: 1- Yeni bir uygulama oluşturun.
2- Formun üzerine birer adet button, image ve OpenDialog yerleştirin.
3- Image Stretch özelliğini True yapın (isteğe bağlı, resmi çerçeve sığdıracaktır).
4- Aşağıdaki metod ile bir resim seçin.
5- Resmi seçtiğiniz anda seçtiğiniz dizine 1500x1125 ebadında yeni bir jpg resmi üretecektir.
procedure TForm1.Button1Click(Sender: TObject);
const
 imgW = 1500;
 imgH = 1125;
var
 imgBMP: TBitmap;
 imgJPG: TJPEGImage;
 Uyumsuz: boolean;
 imgBoyut: Double;
 posSolUst, posUst, posSagAlt, posAlt: integer;
 strYol: String;
begin
 if OpenDialog1.Execute then
 begin
   imgJPG := TJPEGImage.Create;
   Uyumsuz := false;
   try
     imgJPG.LoadFromFile(OpenDialog1.FileName);
     if (imgJPG.Height >= imgJPG.Width) AND (imgH <= imgJPG.Height) then
     begin
       imgBoyut := imgW / imgJPG.Height;
     end
     else if (imgJPG.Height <= imgJPG.Width) AND (imgW <= imgJPG.Width) then
     begin
       imgBoyut := imgH / imgJPG.Width;
     end
     else
     begin
       Uyumsuz := true;
     end;
     imgBMP := TBitmap.Create;
     try
       imgBMP.SetSize(imgW, imgH);
       if not Uyumsuz then
       begin
         posSolUst := (imgW - Round(imgJPG.Width * imgBoyut)) div 2;
         posUst := (imgH - Round(imgJPG.Height * imgBoyut)) div 2;
         posSagAlt := Round(imgJPG.Width * imgBoyut) + posSolUst;
         posAlt := Round(imgJPG.Height * imgBoyut) + posUst;
         imgBMP.Canvas.StretchDraw(Rect(posSolUst, posUst, posSagAlt, posAlt), imgJPG);
       end
       else
       begin
         posSolUst := (imgW - imgJPG.Width) div 2;
         posUst := (imgH - imgJPG.Height) div 2;
         posSagAlt := imgJPG.Width + posSolUst;
         posAlt := imgJPG.Height + posUst;
         imgBMP.Canvas.StretchDraw(Rect(posSolUst, posUst, posSagAlt, posAlt), imgJPG);
       end;
       Image1.Picture.Assign(imgBMP);
       imgJPG.Assign(imgBMP);
       imgJPG.SaveToFile(Format('%s_%sx%s.jpg', [OpenDialog1.FileName, imgW.ToString, imgH.ToString]));
     finally
       imgBMP.free;
     end;
   finally
     imgJPG.free;
   end;
 end;
end;


Not: Uses bölümüne Vcl.Imaging.jpeg ekleyin.

hocam componetini alabilirmiyim

Hocam delphi 7 kullanıyorum component sorunu var

Component Kullanmadım.
Delphi 11 ile test ettim.
Begin : = end / 2;
Cevapla
#10
(09-02-2022, Saat: 15:28)RAD Coder Adlı Kullanıcıdan Alıntı:
(09-02-2022, Saat: 14:28)Blacklord Adlı Kullanıcıdan Alıntı: hocam componetini alabilirmiyim

Hocam delphi 7 kullanıyorum component sorunu var

Component Kullanmadım.
Delphi 11 ile test ettim.

delphi 7 kullanıyorum hocam component için yardım
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  yapay zeka delphi kl007 9 661 26-02-2026, Saat: 09:12
Son Yorum: mrmarman
  Win 11 ve Delphi 7 Minimize sorunu. enigma 7 532 11-02-2026, Saat: 10:27
Son Yorum: RAD Coder
Question Delphi formunu nasıl otomatik tam ekran yapabilirim ? erdemklt0 2 352 23-01-2026, Saat: 10:02
Son Yorum: csunguray
  Delphi SLL kullanım sorunu Bay_Y 12 1.327 22-12-2025, Saat: 18:11
Son Yorum: Bay_Y
  Delphi ile SQL server bağlantı hatası yakalama Under 20 2.014 21-11-2025, Saat: 15:24
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi