• Welcome to Vampyre Imaging Library Forum. Please login or sign up.
 

images - array of bytes TO png jpeg

Started by bunak, 7 November 2009, 09:06:11

Previous topic - Next topic

bunak

I have images that fill by bytes.
This images- 1024х1280х1- opened in Photoshop as RAW - format, with parameter depth - 8 Bits, Count - 1, Width, Height

In code image save in
imageBuf: array[0..1279, 0..1023] of byte;

Is it possible convert this array of bytes to jpeg or png

bunak

Do like this

  mem_st := TMemoryStream.Create;
  Img := TSingleImage.Create;
  try
    mem_st.WriteBuffer(imageBuf, 1280 * 1024);
    mem_st.Position := 0;
    Img.LoadFromStream(mem_st);
    Img.SaveToFile(DirSave_path + '\' + node_img_name.NodeValue + '.jpg');
  finally
    mem_st.Free;
    Img.Free;
  end;


In result - is nothing

Galfar

There's no need to load the image from somewhere if it's already in memory. You can just create empty image with desired size and format, and then copy memory from your imageBuf to image's Bits property.

bunak

8 November 2009, 19:26:40 #3 Last Edit: 8 November 2009, 19:52:19 by bunak
Thank you

Help me please
I do like this
var
  singl_Img: TSingleImage;
  Img : TImageData;
begin
  if not NewImage(img_W, img_H, ifIndex8, Img) then Exit;
  CopyMemory(Img.Bits, @imageBuf[0], Img.Size);
  singl_Img.CreateFromData(Img);

  try
    singl_Img.SaveToFile(DirSave_path + '\' + node_img_name.NodeValue + '.jpg');
  finally
    singl_Img.Free;
  end;

but get "Access violation" error on singl_Img.CreateFromData(Img);

the error erise in this procedure
{ TBaseImage class implementation }
constructor TBaseImage.Create;
begin
  SetPointer;
end;

bunak

8 November 2009, 20:14:47 #4 Last Edit: 24 November 2009, 08:29:35 by bunak
And in result i do like this, and I happy
  singl_Img := TSingleImage.Create;
  singl_Img.CreateFromParams(img_W, img_H, ifGray8);
  CopyMemory(singl_Img.Bits, @imageBuf[0], singl_Img.Size);

  try
    singl_Img.SaveToFile(DirSave_path + '\' + img_name + '.' + cmbx_ImageExt.Text);
  finally
    singl_Img.Free;
  end;

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Name:
Email:

Shortcuts: ALT+S save/post or ALT+P preview

SMF spam blocked by CleanTalk