Delphi ile jpeg dosyasını bmp ye dönüştürme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen erkan1525 »

Methaba,
Jpeg yada başka bir formatı nasıl BMP ye dönüştürebilirim
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen brs »

Google anahtar kelime: delphi jpg to bmp
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen SimaWB »

"delphi jpeg bmp dönüşüm" şeklinde artınca bile ilk linkte hazır kod var :evil:
There's no place like 127.0.0.1
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen erkan1525 »

Doğru ama hiç biri işe yaramıyor. Galiba gerçek bmp ye çeviremiyorlar. Sadece uzantısı değişiyor.
ÖRNEĞİN
stackoverflow dan
procedure Load;
var
J: TJpegImage;
B: TBitmap;
begin
J:= TJpegImage.Create;
B:= TBitmap.Create;
J.LoadFromFile('C:\SomeFile.jpg');
B.Assign(J);

Bu şekilde kayıt edince resmi tekrar başka bir image ye yükleyip kesmek isteyince hata veriyor. Fakat bu resmi paint ile bmp formatında kayıt edince hiçbir sorun çıkmıyor. Elle bile uzantıyı değişince resmi görüntüleyebiliyorsunuz açabiliyorsunuz hatta paint falan bile hata vermiyor. Bu yüzden hangi kodun işe yaradığını anlamak bile biraz zaman alabiliyor. Yani formatın doğruluğunu onaylayamıyorsunuz. Sadece delphi de işlem yapmak istediğinizde farkedebiliyorsunuz.
anonymousdelphicoder
Üye
Mesajlar: 152
Kayıt: 16 May 2014 11:23

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen anonymousdelphicoder »

Merhaba,

GDI+ Kullanarak yapabilirsiniz. Sizin için bir örnek hazırladım.

GDI+ Kütüphanesi buradan indirebilirsiniz.

GDI+ Kurdukdan sonra Tools -> Options -> SOL SEKMEDEN -> Library -> Library Path'e tıklayıp PAS'ların oldugu yeri belirtmeniz sarttır.

http://s6.dosya.tc/server4/s5mvs5/GDI_.rar.html

Kod: Tümünü seç

Uses
GDIPUTIL,GDIPOBJ,GDIPAPI;

.....

Procedure SaveJpgToBmp;
var
GDIBitmap:TGPBitmap;
JpegMem:TMemoryStream;
BmpMem:TMemoryStream;
Jpg:TJPEGImage;
Guid_:TGUID;
begin
try
JpegMem := TMemoryStream.Create;
BmpMem := TMemoryStream.Create;
GetEncoderClsid('image/bmp',Guid_);

//Diğer mime tipleri
//image/bmp
//image/jpeg
//image/gif
//image/png
//image/tiff

Jpg := TJPEGImage.Create;
Jpg.LoadFromFile('C:\JpgResim.jpg');
Jpg.SaveToStream(JpegMem);

JpegMem.Position := 0;

GDIBitmap := TGPBitmap.Create(TStreamAdapter.Create(JpegMem)); // MemoryStream dan almak istersen adapter kullanarak yapabilirsin.

//GDIBitmap := TGPBitmap.Create('C:\JpgResim.jpg'); // direk diskden almak istersen yol vererek yapabilirsin.

GDIBitmap.Save(TStreamAdapter.Create(BmpMem),Guid_);
BmpMem.Position := 0;
BmpMem.SaveToFile('C:\BmpResim.jpg');

//GDIBitmap.Save('C:\BmpResim.bmp',Guid_); //direk diske kaydededebilirsin.

finally
{Sistem kaynakları iade edilmeli}
FreeAndNil(JpegMem);
FreeAndNil(BmpMem);
FreeAndNil(Jpg);
FreeAndNil(GDIBitmap); // GDI Nesneleri sistemde sınırlı sayıda oluşturulabilir eğer sınırı aşarsanız Out Of Memory alırsınız lütfen dikkat
end;
end;
Kolay gelsin.

EDIT: XE7 ile yapıldı.
anonymousdelphicoder
Üye
Mesajlar: 152
Kayıt: 16 May 2014 11:23

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen anonymousdelphicoder »

Ayrica yukaridaki soylediginiz gercek disidir. Uzanti degismez bmp stream i nasil ise bmp nin streami islenir. Bunu ogrenmenin inanmanizin en kolay yolu 800x600 jpeg resmi bmp e assign edin ve diske kaydedin iki resmin boyutlarina bakin anlayacaksiniz. Tbitmap tjpegimage vs hepsi TGraphic den turer ve her sinif kendi stream formatini header + goruntu datasini olusturur. Uzantiyi degistirmek hic bir ise yaramaz uzantinin en buyuk amaci bildiginiz uzere dosyalari ilgili programlarla iliskilendirmektir.
Iyi gunler
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen erkan1525 »

anonymousdelphicoder yazdı:Ayrica yukaridaki soylediginiz gercek disidir...
:D Sanki bir birine savaş açmış 2 devletiz.
Ama haklıymışsın. Daha önce aceleden birşeyleri yanlış yaptım herhalde dönüştürmemişti. Sen ısrar edince denetim sorun yok.
Ammaaaa ve lakiiiiin.

image kontrolüne bir jpeg dosya yükleyip bunu bir pictureye assingn edince sorun yok işlem gerçekleşiyor ama kayıt etmeye çalışınca timage to tbipmap bilmemne .... bir hata veriyor. bunu nasıl hallederiz acaba? Diyecektim kiiiii onuda buldum... Hata almamak için önce jpegimageye ordanda bitmapa assing etmek lazım o zaman hata yaşanmıyor....

Peki image kontrolüne yüklü resmin jpg, png, bmp hangi formatta olduğunu nasıl buluruz??*
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen csunguray »

SimaWB ve brs arkadaşlarım. Dayanamadım yazacağım. "Jpeg yada başka bir formatı nasıl BMP ye dönüştürebilirim?" sorusu gayet ciddi bir sorudur. Ya buna GERÇEK bir cevap verin veya "Google da arayın; 2 dakikada bulursunuz" türünden cevaplarla kalabalık etmeyin.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen mrmarman »

JPG, PNG, BMP, GIF gibi tanınmış resim formatlarının bilindik header yapıları vardır. Ancak bunları gözlemlemek için resim dosyasını veya ekranda ise streamin ilk 5 - 10 byte'lık kısmını binary olarak hazır bildiklerimiz ile karşılaştırmak lazım gelir.

Bu noktada @csunguray'ın dediği gibi farklı bir disiplin olduğundan herkesin bir kerede bilebileceği bir konu değildir.

Bu aşamada kod yazmayıp yol göstereceğim. Öncelikli önerim, hex içerik gösteren bir editör ile bilindik resim örneklerinin içine binary (hex kodları görünen) şekilde bakınız ve notlarınızı alınız.

Örneğin BMP BM ile başlar, JPG JFIF ifadesi içerir, GIF...... şeklinde destek vereceğiniz formatları binary olarak tanıyın.

Sonraki adım, kullanıcının sunduğu her resim için önce ilk belirli byte'deki ipuçlarını değerlendirip kararı vereceksiniz.

Bu işlemler için memorystream, filestream, blockread dilediğiniz birinden faydalanacaksınız.
Resim
Resim ....Resim
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen SimaWB »

csunguray yazdı:SimaWB ve brs arkadaşlarım. Dayanamadım yazacağım. "Jpeg yada başka bir formatı nasıl BMP ye dönüştürebilirim?" sorusu gayet ciddi bir sorudur. Ya buna GERÇEK bir cevap verin veya "Google da arayın; 2 dakikada bulursunuz" türünden cevaplarla kalabalık etmeyin.
Soruya "ciddi değil" diyen oldu mu? :Nevil
Yüksek lisansımın bir bölümünü Image Processinge ayırmak zorunda kaldığımdan resim formatları arasında dönüşümün ne kadar önemli bir iş olduğunu gayet iyi bilirim :)
Fakat yine de hangi soru ciddi, hangisi değil siz nasıl ayırt ediyorsunuz merak ettim. Herkesin sorusu kendine göre "ciddi"dir.

"GERÇEK" bir cevap nasıl olur bana açıklar mısınız? Yada benim verdiğim cevap neden GERÇEK değil?
Cevap içeriğinde kod bloğu yoksa sizce GERÇEK bir cevap değil midir?

Bu forumda; hemen hemen her zaman cevap yazmadan evvel daha önce bu soru sorulmuş mu, yada cevabı forumda var mı diye bakarım. Böylece aynı kodlar tekrar tekrar yazılmasın, bu güzel forum kod çöplüğüne dönmesin diye gayret göstermiş olurum.

Maalesef bu sorunun cevabı da bu forumda var. Hatta siz bile bir zamanlar buna benzer bir konuda(BMPden JPGe dönüşüm) cevap yazmışsınız. Sadece o soruya bakılarak bile bu sorunun cevabı bulunabilir. Ama arama yapılmadan soru sorulursa bu forumda sürekli aynı sorular ve aynı cevaplar olur.

Soruyu soran arkadaş maalesef ben cevap verdikten sonra, arama yaptığını ve bulduğu kodların işe yaramadığını söylemiş ve kodları paylaşmış. Aslında soru sorulurken bu şekilde olmalıydı! Hatta daha sonra aslında yazdığı kodların işe yaradığını da görmüş. Keşke soruyu sorarken yapmış olduğu aramalardan, bulduğu örneklerden bahsetmiş olsaydı.

Bizler burada birilerine yardımcı olmak istiyorsak, hazır kod yazarak değil, insanları araştırmaya teşvik ederek yardımcı olmalıyız. (En azından ben bunun doğru olduğuna inanıyorum). Araştırması neticesinde birşey bulamadıysa, yada birşeyler eksik kaldıysa; gerekirse for döngüsü ile ilgili soru sorsun, bence CİDDİ sorudur.
There's no place like 127.0.0.1
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen brs »

csunguray yazdı:SimaWB ve brs arkadaşlarım. Dayanamadım yazacağım. "Jpeg yada başka bir formatı nasıl BMP ye dönüştürebilirim?" sorusu gayet ciddi bir sorudur. Ya buna GERÇEK bir cevap verin veya "Google da arayın; 2 dakikada bulursunuz" türünden cevaplarla kalabalık etmeyin.
Sayın arkadaşım biraz amacını aşan bir yorum yapmışsın,
Ben 30 yaşında bilgisayar sahibi oldum yani 10 yıl önce, bilgisayarın kurulumu bilmedigim için bir dostumdan yardım almıştım, şimdi ise ben o dostuma bilgisayarına format atmak gibi basit işler için benden yardım istiyor. "İstedikten sonra azimle taşı bile delersin"

Bu arada cevaplarımızla arkadasi yonlediriyoruz, bence siz deynekcilik yapıyorsunuz...

Soruyu okuyunca merak ettim ve google yazdım gördüm ki 10 larca kaynak var arkadaşı bilgilendirmek için cevap yazdım, yetmemiş bu seferde uzantıyı nasil anlarız gibi başka bence gereksiz bir soru daha sormuş...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen mrmarman »

Arkadaşlar cevap yazmak inceliği gösteren herkes eşitliğin aynı tarafında.

Birbirinizi eleştirirken özel mesaj ile yapın cevap hakkı doğarsa bu eleştiri sahibi ile muhatap arasında kalsın. Şimdi burada cevap yazarak @SimaWB ve @brs için sessiz kalmış gibi görünüyorum hoş olmuyor.

Aynı soruyu onlarca defa cevapladım yine cevaplarım. Her cevabın özgün olmasına gayret ederim. Öyle daha önceki cevabımdan veya denemeksizin, kendi kod süzgecinden geçirmeksizin internetten copy paste yapanları da banal bulurum. Bu paragraf kod çöplüğü konusuna atıftı.

Cevabı bulma konusunda küçük bir iğneleme egoları harekete geçirmek için yeterli olabiliyor.

Bu konuda Veli bey ya da Barış beyin yapıcı eleştri manasında desteğinin dahi var olduğuna inancım tam. Göstergesi başka sorulara sıkılmadan verdikleri diğer cevaplar zaten.

Birbirimizi kırmaya değmez.
Resim
Resim ....Resim
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen erkan1525 »

Cevap yazan herkese teşekkür ederim.
@mrmarman abinin dediği gibi böyle şeyler birbirini kırmaya deymez.

@SimaWB daha önce birkaç soruma daha cevap vermişti. Teşekkür ederim.

@SimaWB ve @brs Öncelikle her takıldığım yerde şuursuzca buralara sorular yazmadığımı bilmenizi isterim. Her sorumda olduğu gibi bunda da önce netten araştırdım sonra birkaç test yaptım bir sonuç alamayınca buraya yazdım. Ayrıca her yazdığımdada cevap verebileceğim birşeyler varmı diyede bakarım. Bu süreci sorumda anlatmak istemedim. Çünkü önceki sorularım ve aldığım cevap ve tepkilerden anladımki, olabildiğince kısa net ve basit bir şekilde uzatmadan soru sormalıyım. Yoksa okuyan herkes farklı birşey anlayabiliyor veya bazılarının hepsini okuyacak vakti olmuyor v.s v.s

Bazı cevaplara gerçekten hayret ediyorum. Sonuçta bizde manyak değiliz. Sırf iş olsun, işsizlikten, birilerine eziyet olsun yada gıcıklık olsun diye soru sormuyoruz. Birşeyler yapmaya çalışıyoruz ve bilmediklerimizi soruyoruz. Sormak, bir kodu yanlış yorumlamak yada yanlık yapmak ayıpmış gibi cevaplar geliyor. @anonymousdelphicoder Söyledikleriniz gerçek dışıdır demek sen yalan söylüyorsun demektir. Tanımadığım insanlara yalan söylemekteki maksadımı bende merak ettim. Yinede bu sözünüzü "bir yerde mutlaka yanlış birşey yapmışsınızdır" diye algılıyor ve iyi niyetinize güveniyorum.
@brs sorumun gereksiz olduğuna nereden karar veriyorsun acaba. Gerksiz bir soru sormamın maksadı ne olabilir bende merak ediyorum. Böyle anlamsız eleştiriler yapacak kadar kızanlar çalışan örneği yapıp upload edebilirler veya cevap yazmayabilirler.

Nihayetinde herkes herşeyi bilemez bu yüzden soru sorar. Boş boş eleştirmek yerine "şu sebepten dolayı şu işi yapmaya çalışmak gereksiz" demek daha kibarca ve bilgilendirici olmazmı?. Yine "Googleden arayıp denediniz mi? birçok örnek var" demek te daha uygun olurdu diye dününüyorum veya @mrmarman abinin yaptığı gibi forumdaki eski bir cevaba yönlendirmek te daha kibarca olur.

Hiçbir soruyu veya cevaba verdiğim yanıtı art niyetle yazmadığımı bilmenizi isterim. Lütfen alınmayın. Cevaplarınız için çok teşekkür ederim.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen brs »

Niye gereksiz dedim biliyor musun? sorunda (Peki image kontrolüne yüklü resmin jpg, png, bmp hangi formatta olduğunu nasıl buluruz??) yazmışsın googl'da dosya uzantısını alma yazdım yaklaşık 1 dakika içinde bu sayfaya ulaştım

http://www.delphibasics.co.uk/RTL.asp?N ... ctFileName

Kod: Tümünü seç

procedure TMainForm.Button1Click(Sender: TObject);
var
  fullFileName : string;

begin
  // Set up a full file name with drive and path
  fullFileName := 'C:\setup.txt';

  // Show the component parts of this full name
  ShowMessage('Drive = '+ExtractFileDrive (fullFileName));
  ShowMessage('Dir   = '+ExtractFileDir   (fullFileName));
  ShowMessage('Path  = '+ExtractFilePath  (fullFileName));
  ShowMessage('Name  = '+ExtractFileName  (fullFileName));
  ShowMessage('Ext   = '+ExtractFileExt   (fullFileName));
end;
Kolay gelsin...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: Delphi ile jpeg dosyasını bmp ye dönüştürme

Mesaj gönderen erkan1525 »

Doğru ama bunu sürekli kullanmak istediğin bir fonksiyona dönüştürdüğünü varsayalım. Yani image nesnesine her zaman dosyadan yükleme yapmıyoruz ki.
Bu durumda fonksiyonu kullanırken image nesnesine yüklü görüntünün formatını da bildirmek gerekir.

Yinede senin gibi düşünmemiştim. Biraz gereksiz olduğunu kabul ediyorum. :)
Cevapla