U kom jeziku programiras, C ili C++?
Koji kompajler ili biblioteku(e) koristis?
Na C++ jeziku se ista stvar moze uraditi na nekoliko nacina...
Na primer, na C++ Builder-u, tvoj 'problem' bih zapoceo klasama:
TMemoryStream ili
TFileStream
... one opet imaju *skoro sve* sto ti je neophodno za manipulaciju podacima
nad kojima rade.
// NETESTIRANO
Code:
TMemoryStream *MS = NULL;
try
{
try
{
MS = new TMemoryStream;
MS->LoadFromFile( "C:\\nekifajl.png" );
// TMemoryStream ima sve sto je neophodno za...
// manipulaciju podacima: pomera blokove memorije, kopira, uklanja, ...
// skracuje velicinu buffera, povecava velicinu buffera, pristupa pojedinacnim...
// elementima... itd ...
MS->SaveToFile( "C:\\nekifajl.png" );
}
catch ( const Exception &e )
{
// Greska pri otvaranju datoteke...
}
}
__finally
{
if ( MS )
delete MS;
}
... inace sve si to mogao da uradis i preko char*, ali uz mnogo vise muke,
sto se narocito odnosi na povecavanje buffer-a... Dakle, mnoge metode bi
morao da uradis sam - za cije babe zdravlje?
P.S. Sto se tice otvaranja PNG fajla... Ne znam kako PNG format belezi podatke,
ali pazi, neke izmene na jednom mestu mozda moraju i negde drugde da se zabeleze kao nekavi checksum-i i sl..
Zato pogledaj
http://www.wotsit.org
...da proucis prvo format...