Jpg to Binary Code
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Jpg to Binary Code
Jpg veya bir exeyi binary ( 0 ve 1 sistemi) koda dönüştürmek ve bunu istediğim zamna yine jpg veya exe haline getirmek istiyorum bu mümkünmü ?
Aslında her şey binary kod...
Bilgisayarda kayıt zaten 1-0 şeklinde.
Neye dönüştüreceksin anlamadım.
Dosyayı açılamaz hale getirmek istiyorsan, uzantıyı silmen yeterli.
Ama bu sefer de Birlikte Aç komutuyla uygun program seçilerek yine açılabilir.
Bunu aşmak için de dosyanın başına saçma sapan bir kaç bayt yazman yeterli olur diye düşünüyorum.
Bilgisayarda kayıt zaten 1-0 şeklinde.
Neye dönüştüreceksin anlamadım.
Dosyayı açılamaz hale getirmek istiyorsan, uzantıyı silmen yeterli.
Ama bu sefer de Birlikte Aç komutuyla uygun program seçilerek yine açılabilir.
Bunu aşmak için de dosyanın başına saçma sapan bir kaç bayt yazman yeterli olur diye düşünüyorum.
Selam,
Bu dediğini yapması çok da zor değil. Gerekli fonksiyonları yazdım.
Resmi binary stringlere çevirmek için yapman gereken şu. Resmi TFileStream kullanarak aç. Her seferinde bir tane integer oku ve bu değeri IntToBin fonksiyonuna gönder. Geri gelen değeri başka bir dosyaya yaz.
Resmi eski haline getirmek için de tam tersi yapılacak, ama dikkat etmen gereken tek nokta, her seferinde 32 byte okuman gerektiğidir.
Ama bu şekilde yapacak olursan program çok yavaş çalışacaktır. Buraya adam gibi bir optimizasyon koyman gerekir (Örneğin resmin tamamını Int dizisine almak ve bellekten işlem yapmak gibi) Bu arada IntToBin ve BinToInt fonksiyonlarında da optimizasyon yapılabilir, karışık olmasın diye böyle yazdım.
Bu arada böyle bir sistem çok anlamsız. Çünkü sonuçta elde edeceğin dosya, normal JPEG dosyanın tam 8 katı büyüklüğünde olacak. 4 byte olan integer değerleri 32 byte olan string değerlerde saklamaya çalışıyorsun.
Kolay gelsin,
Bahadır Alkaç
Bu dediğini yapması çok da zor değil. Gerekli fonksiyonları yazdım.
Kod: Tümünü seç
function IntToBin(Value: integer): string;
var
I:Integer;
RtnVal:string;
tmp:DWORD;
begin
SetLength(RtnVal, 32);
FillMemory(@RtnVal[1], 32, Byte('0'));
tmp:=1;
for I:=1 to 32 do
begin
if (tmp and Value) > 0 then
RtnVal[33 - I]:='1';
tmp:=tmp shl 1;
end;
Result:=RtnVal;
end;
function BinToInt(Value: string): Integer;
var
I:Integer;
RtnVal:Integer;
tmp:Integer;
begin
RtnVal:=0;
tmp:=1;
for I:=1 to 32 do
begin
if Value[33 - I] = '1' then
Inc(RtnVal, tmp);
tmp:=tmp shl 1;
end;
Result:=RtnVal;
end;
Resmi eski haline getirmek için de tam tersi yapılacak, ama dikkat etmen gereken tek nokta, her seferinde 32 byte okuman gerektiğidir.
Ama bu şekilde yapacak olursan program çok yavaş çalışacaktır. Buraya adam gibi bir optimizasyon koyman gerekir (Örneğin resmin tamamını Int dizisine almak ve bellekten işlem yapmak gibi) Bu arada IntToBin ve BinToInt fonksiyonlarında da optimizasyon yapılabilir, karışık olmasın diye böyle yazdım.
Bu arada böyle bir sistem çok anlamsız. Çünkü sonuçta elde edeceğin dosya, normal JPEG dosyanın tam 8 katı büyüklüğünde olacak. 4 byte olan integer değerleri 32 byte olan string değerlerde saklamaya çalışıyorsun.
Kolay gelsin,
Bahadır Alkaç
renk bilgilerinin - bmp için konuşuyorum jpeg de sıkıştırma ve açma- en düşük bitini kullanarak yazabilirsin
bir zamanlar öyle birşey yazmıştım
viewtopic.php?t=13152
bir zamanlar öyle birşey yazmıştım
viewtopic.php?t=13152