HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: PocketStudio+Save Jpeg кривое сохранение

[Ответить]
RomanSW [14.06.2005 19:15] PocketStudio+Save Jpeg кривое сохранение:
Люди добры, могогите пожалуйста кто чем может Я уже умаялся:
Код:


type
PImageData = ^ImageData;
ImageData = record
imgH : ^UInt8;
offset: UInt32;
rowBytes : UInt16;
width : Coord;
height : Coord;
end;
.........................................................

Function Swap16(n:UInt16):UInt16;
begin
Result := ((((n shl 8) and $FF00) or ((n shr 8) and $00FF)));
end;

function SkipPtr(p: Pointer): Pointer;
begin
Result := Pointer(UInt32(p)+1);
end;

function PalmPhotoWriteCallBack(bufferP: Pointer; var sizeP: UInt32; userDataP: Pointer): Err;
var
error: Err;
size: UInt32;
myBuffP: ^UInt16;
dataP: PImageData;
i : UInt32;
begin
error:=errNone;
// size:= sizeP div 2;
size:= sizeP;
myBuffP:= PUint16(bufferP);
dataP:= PImageData(userDataP);
for i := 0 to size-1 do
begin
myBuffP^ := Swap16(dataP.imgH^);
dataP.imgH := SkipPtr(dataP.imgH);
dataP^.offset := dataP^.offset + 1;
myBuffP := SkipPtr(myBuffP);
end;

result := error;
end;

............................................................

var
createParam: PalmPhotoCreateParam;
writeParam: PalmPhotoReadWriteParam;
imageD: ImageData;
BmpPtr:BitmapPtr;
begin
BmpPtr := WinGetBitmap(captureInfo.winH);

ImageD.imgH:=BmpGetBits(bmpPtr);
ImageD.offset:=0;

createParam.fileLocation.fileLocationType:= palmPhotoStreamLocation;
StrCopy(createParam.fileLocation.StreamFile.name,'test12.jpg');
createParam.fileLocation.StreamFile.type_:= Rsc('Foto');
createParam.fileLocation.StreamFile.creator:= Rsc('Foto');
createParam.imageInfo.bitsPerPixel:= 16;
createParam.imageInfo.fileFormat:= palmPhotoJPEGFileFormat;

newPhotoH := PalmPhotoCreateImageV2(imgRefNum, createParam);
MemSet(@writeParam,sizeof(PalmPhotoReadWriteParam),0);
writeParam.imageFormat:= palmPhotoRGB565FileFormat;//palmPhotoJPEGFileFormat;
writeParam.rwCallback:= PalmPhotoWriteCallBack;
writeParam.userDataP:= @imageD;
error := PalmPhotoWriteImage(imgRefNum,newPhotoH,writeParam);
Error := PalmPhotoAddImageV2(ImgRefNum,0, newPhotoH,PalmPhotoH);
PalmPhotoCloseImageV2(imgRefNum,newPhotoH);


После выполнения данного кода есть следующий результат: Появляется картинка с именем test12 (в разделе фото/видео), она открывается, размеры ее правильные НО: на картинке жуткий шум (но очертания четко видны) и при последующей перезаписи ничего не происходит. То есть картинка остается прежней и в функции PalmPhotoWriteImage возникает ошибка (кокая понятия не имею). Меняю имя файла с StrCopy
(createParam.fileLocation.StreamFile.name,'test12.jpg')
на
StrCopy(createParam.fileLocation.StreamFile.name,'test124.jpg')
запускаю, все так же как и выше.
То есть помимо шума на картинке ее не получается перезаписать, даже после удаления файлов картинка под тем же именем не создается (помогает hard reset).
Кто с этим сталкивался помогите пожалуйста ...
[Ответить]