Resim Sıkıştırma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Resim Sıkıştırma
Herkeze selam!
Delphide veritabanına kayıt şlemi yapıyorum ve veri tabanına resimde kaydedeceğim bunun için bazı büyük resimlerin boyutlarını küçültüpde kaydetmek istiyorum bunun için yardımlarınızı bekliyorum.
İyi çalışmalar.
Delphide veritabanına kayıt şlemi yapıyorum ve veri tabanına resimde kaydedeceğim bunun için bazı büyük resimlerin boyutlarını küçültüpde kaydetmek istiyorum bunun için yardımlarınızı bekliyorum.
İyi çalışmalar.
Resim Sıkıştırma
Kb cinsinde sıkıştıracam yanlız örneğin 20mb bir jpg dosyasını nasıl küçültecem.
İyi Çalışmalar.
İyi Çalışmalar.
Hocam
20 mb bir jpeg dosyası olduğundan eminmisiniz.. veya şöyle sorayım bu 20 mb lık dosyayı database kayıt etmek istediğinizden eminmisiniz..
Zaten dosya büyüklüğünde bmp formatına göre bayağı bir azalma sağlamak için jpeg formatına çeviri yapıyoruz..
Hocam bir yanlışınız olmasın.. bende 3333 x 2500 boyutlarında bir jpeg resmi var büyüklüğü sadece 746 kb..
Tavsiyem eğer jpeg dosyanız gerçekten 20 mb ise önce boyutlarını küçültmeniz..
Ha bunu nasıl yaparız dersen işte onu bilmiyorum..
Ama eminim bilen bir arkadaş çıkacaktır...

Zaten dosya büyüklüğünde bmp formatına göre bayağı bir azalma sağlamak için jpeg formatına çeviri yapıyoruz..
Hocam bir yanlışınız olmasın.. bende 3333 x 2500 boyutlarında bir jpeg resmi var büyüklüğü sadece 746 kb..
Tavsiyem eğer jpeg dosyanız gerçekten 20 mb ise önce boyutlarını küçültmeniz..
Ha bunu nasıl yaparız dersen işte onu bilmiyorum..
Ama eminim bilen bir arkadaş çıkacaktır...
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
Merhaba,
bazı büyük resimlerin boyutları o kadar olabiliyor. Eski çalıştığım firmada makina resimleri vardı. 20-30 MB büyüklüğünde olanlar vardı.
Ben de TrSoft'a katılıyorum. Bu resimleri veritabanına saklamak yerine, sadece programın ulaşabileceği bir klasör ayarlayıp (mümkünse) resimleri buraya koyun ve veritabanında sadece dosyanın yerini ve ismini tutun. Böylesi çok daha iyi olacaktır.
Kolay gelsin.
bazı büyük resimlerin boyutları o kadar olabiliyor. Eski çalıştığım firmada makina resimleri vardı. 20-30 MB büyüklüğünde olanlar vardı.
Ben de TrSoft'a katılıyorum. Bu resimleri veritabanına saklamak yerine, sadece programın ulaşabileceği bir klasör ayarlayıp (mümkünse) resimleri buraya koyun ve veritabanında sadece dosyanın yerini ve ismini tutun. Böylesi çok daha iyi olacaktır.
Kolay gelsin.
Hayır bu dosyaları database'ye kayıt etmeyeceğim ve aynen dediğiniz gibi bir kalsörde toplayacağım ama resimler okadar fazlaki (bu arada her resmin boyutu bukadar çok değil)hdd yetmeyebilir hatta yetmez ve kişi yedekleme yapmak istediğinde iş çok zora girer.
Ben şöyle bir şey düşündüm:
Jpeg formatını gif'e çevirsek ve resim boyutlarındada oynama yapsak boyut oldukca düşer ama bunu yapamadım
.
Nu konuda bişey önerebilirmisiniz?
Ben şöyle bir şey düşündüm:
Jpeg formatını gif'e çevirsek ve resim boyutlarındada oynama yapsak boyut oldukca düşer ama bunu yapamadım

Nu konuda bişey önerebilirmisiniz?
Resim Boyutlarını küçültmek için Photoshop kullanabilirsin. Image menüsünden Image Size seceneği ile resimlerini istediğin pixelde küçültebilirsin. Ve küçültme işlemi yaptığın zaman tekrar kayıt ettiğinde Jpg formatını seç kayıt esnasında Jpeg Options formu çıkar oradan Small File n karşısında olan scrollbarı 8 getir resminin bayağı küçüldüğünü hissedersin.
Kolay Gelsin...
Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Tabii ki de, .gif 256 renk olduğu için ve boyutlarda küçüleceğinden boyutları çok düşecektir.
Paint Shop Pro'nun Batch işlem özelliği var. Bir kere deneme yaparak bir resim kabul edilebilir boyutlara getirdiğiniz zaman, bir klasördeki tüm dosyaları batch işlem ile aynı tarzda küçültebilirsiniz.
Delphi tarafında bir çözüm soruyorsanız, fikrim yok.
Kolay gelsin.
Paint Shop Pro'nun Batch işlem özelliği var. Bir kere deneme yaparak bir resim kabul edilebilir boyutlara getirdiğiniz zaman, bir klasördeki tüm dosyaları batch işlem ile aynı tarzda küçültebilirsiniz.
Delphi tarafında bir çözüm soruyorsanız, fikrim yok.
Kolay gelsin.
Fi tarihinde kullandığım bir fonksiyon vardı... Şu amaçla kullanıyordum. Secilen herhangi bir boyuttaki bmp, gif ve jpg dosyayı belirlenmiş boyuttaki bir jpg haline donusturuyor...
Fonksiyonunun parametrelerinin anlamı:
VAR_DOSYA_ADI: Bu donusume tabi tutulacak dosyanın tam yolu ve adı...
VAR_GRAPHIC: donusume tabi tutulacak olan dosyayi bir TImage nesnesine yükleyip, Bu parametreye de Image1.Picture.Graphic degerini gonderin... Aslında bu gerekli olmamalı VAR_DOSYA_ADI ile de fonksiyon isi halledebilmeli ama o zamanki kullandıgım yer geregi boyle yazmısız ne yapalım... Su an uzerinde çalışma sansım olmadığı icin aynen yolluyorum...
VAR_GENISLIK:Yeni resmin olmasını istediginiz pixel olarak genislik degeri
VAR_YUKSEKLIK:Yeni resmin olmasını istediginiz pixel olarak yükseklik degeri
fonksiyon sonuç resmin yolunu dönmektedir...uses da GIFImage, jpeg olmasi gerekiyor ...
ayrıca unitin basında implementation in altinda....
Gozume carpan bu fonksiyon icinde kullanılmıs bir baska fonksiyonum
Benzer bir eksik olursa artık tolere edilebilir herhalde...
Kolay gelsin....
Fonksiyonunun parametrelerinin anlamı:
VAR_DOSYA_ADI: Bu donusume tabi tutulacak dosyanın tam yolu ve adı...
VAR_GRAPHIC: donusume tabi tutulacak olan dosyayi bir TImage nesnesine yükleyip, Bu parametreye de Image1.Picture.Graphic degerini gonderin... Aslında bu gerekli olmamalı VAR_DOSYA_ADI ile de fonksiyon isi halledebilmeli ama o zamanki kullandıgım yer geregi boyle yazmısız ne yapalım... Su an uzerinde çalışma sansım olmadığı icin aynen yolluyorum...
VAR_GENISLIK:Yeni resmin olmasını istediginiz pixel olarak genislik degeri
VAR_YUKSEKLIK:Yeni resmin olmasını istediginiz pixel olarak yükseklik degeri
fonksiyon sonuç resmin yolunu dönmektedir...
Kod: Tümünü seç
function ConvertedResizedFileName(VAR_DOSYA_ADI:string;VAR_GRAPHIC: TGraphic;VAR_GENISLIK:smallint;VAR_YUKSEKLIK:smallint):string;
var
JPEG : TJPEGImage;
Bitmap: TBitmap;
Gif:TGifImage;
ARect: TRect;
VAR_JPEG_ADI,VAR_TEMP_DIZINI:string;
VAR_KUCULTME_ORANI:Real;
begin
VAR_JPEG_ADI:=VAR_DOSYA_ADI;
VAR_TEMP_DIZINI:=TempDirectory;
ConvertedResizedFileName:=VAR_DOSYA_ADI;
if (VAR_GRAPHIC is TBitmap) then //BMP --> JPEG
begin
Bitmap := TBitmap.Create;
try
Bitmap.LoadFromFile(VAR_DOSYA_ADI);
JPEG := TJPEGImage.Create;
try
JPEG.Assign(Bitmap);
// JPEG.CompressionQuality := 70;
JPEG.SaveToFile(VAR_TEMP_DIZINI+'converted.JPG');
VAR_JPEG_ADI:=VAR_TEMP_DIZINI+'converted.JPG';
ConvertedResizedFileName:=VAR_JPEG_ADI;
finally
JPEG.Free;
end
finally
Bitmap.Free;
end;
end;
if (VAR_GRAPHIC is TGifImage) then
begin
Gif := TGifImage.Create;
try
Gif.LoadFromFile(VAR_DOSYA_ADI);
JPEG := TJPEGImage.Create;
try
JPEG.Assign(Bitmap);
// JPEG.CompressionQuality := 70;
JPEG.SaveToFile(VAR_TEMP_DIZINI+'converted.JPG');
VAR_JPEG_ADI:=VAR_TEMP_DIZINI+'converted.JPG';
ConvertedResizedFileName:=VAR_JPEG_ADI;
finally
JPEG.Free;
end
finally
Gif.Free;
end;
end;
if (VAR_GRAPHIC.Width>VAR_GENISLIK) or (VAR_GRAPHIC.Height>VAR_YUKSEKLIK) then
begin
JPeg := TJPegImage.Create;
Bitmap := TBitmap.Create;
try
if (VAR_GRAPHIC.Width/VAR_GENISLIK)>(VAR_GRAPHIC.Height/VAR_YUKSEKLIK) then
VAR_KUCULTME_ORANI:=VAR_GRAPHIC.Width/VAR_GENISLIK
else
VAR_KUCULTME_ORANI:=VAR_GRAPHIC.Height/VAR_YUKSEKLIK;
while (Round(VAR_GRAPHIC.Width/VAR_KUCULTME_ORANI)>VAR_GENISLIK) or (Round(VAR_GRAPHIC.Height/VAR_KUCULTME_ORANI)>VAR_YUKSEKLIK) do
VAR_KUCULTME_ORANI:=VAR_KUCULTME_ORANI*1.001;
JPeg.LoadFromFile(VAR_JPEG_ADI);
{set bitmap at half size}
Bitmap.Width := Round(JPeg.Width/VAR_KUCULTME_ORANI);
Bitmap.Height := Round(JPeg.Height/VAR_KUCULTME_ORANI);
ARect := Rect(0, 0, Round(JPeg.Width/VAR_KUCULTME_ORANI), Round(JPeg.Height/VAR_KUCULTME_ORANI));
{draw at half size}
Bitmap.Canvas.StretchDraw(ARect, JPeg);
JPeg.Assign(Bitmap);
JPEG.CompressionQuality := 70;
JPeg.SaveToFile(VAR_TEMP_DIZINI+'resized.JPG');
ConvertedResizedFileName:=VAR_TEMP_DIZINI+'resized.JPG';
finally
JPeg.Free;
Bitmap.Free;
end;
end;
end;
ayrıca unitin basında implementation in altinda....
Kod: Tümünü seç
type
TGraphicHeader = record
Count: Word; { Fixed at 1 }
HType: Word; { Fixed at $0100 }
Size: Longint; { Size not including header }
end;
TGraphicHack = class(TGraphic);
TGraphicHackClass = class of TGraphicHack;
TImageSignature = record
ImageType: TGraphicClass;
Name: string;
Signature: string;
end;
const
Signatures: array[0..2] of TImageSignature
= ((ImageType: TBitmap; Name: 'Bitmap'; Signature: 'BM'),
(ImageType: TGIFImage; Name: 'GIF'; Signature: 'GIF'),
(ImageType: TJPEGImage; Name: 'JPEG';
Signature: chr($FF)+chr($D8)+chr($FF)+chr($E0)+chr($00)+chr($10)+'JFIF'));
Kod: Tümünü seç
function TempDirectory():string;
var
VAR_DIRECTORY: Array[0..$FF] of Char;
begin
GetTempPath(MAX_PATH,VAR_DIRECTORY);
TempDirectory:=VAR_DIRECTORY;
end;
Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... 
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...

Zaten jpg image dosyaları sıkıştırılmış formattadır. 20-30 mb bayağı büyük, bunu düşürmek için ya arkadaşların dediği gibi çözünürlüğü düşüreceksin veya jpg içinden resim kalitesini düşüreceksin. JPG resim dosyaları ile ilgili bir örnek delphinin içinde de var zaten hatta pathini de yazayım sana:
C:\Program Files\Borland\Delphi5\Help\Examples\Jpeg
Kolay gelsin
C:\Program Files\Borland\Delphi5\Help\Examples\Jpeg
Kolay gelsin
rica ederim....
işinize yaramasına sevindim....
işinize yaramasına sevindim....

* http://www.fahrettin.org Manzara Fotoğraflarım... 
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...
