Delphi ile jpeg dosyasını bmp ye dönüştürme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Delphi ile jpeg dosyasını bmp ye dönüştürme
Methaba,
Jpeg yada başka bir formatı nasıl BMP ye dönüştürebilirim
Jpeg yada başka bir formatı nasıl BMP ye dönüştürebilirim
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
Google anahtar kelime: delphi jpg to bmp
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
"delphi jpeg bmp dönüşüm" şeklinde artınca bile ilk linkte hazır kod var 

There's no place like 127.0.0.1
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
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.
Ö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.
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
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
Kolay gelsin.
EDIT: XE7 ile yapıldı.
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;
EDIT: XE7 ile yapıldı.
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
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
Iyi gunler
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
anonymousdelphicoder yazdı:Ayrica yukaridaki soylediginiz gercek disidir...

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??*
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
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/)
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/)
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
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.
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.
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
Soruya "ciddi değil" diyen oldu mu?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.

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
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
Sayın arkadaşım biraz amacını aşan bir yorum yapmışsın,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.
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...
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
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.
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.
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
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.
@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.
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
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
Kolay gelsin...
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;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: Delphi ile jpeg dosyasını bmp ye dönüştürme
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.
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.
