Please help me about bmp, jpeg, and png graphic formats

Discussion in 'Programming' started by ghreza, Dec 9, 2009.

  1. #1
    I should write a program to combine the huge number of images side-by-side. The source images are jpeg and png formats images. I think no any direct way to combine png or jpeg images to gather, unless first convert them to bmp, or any raw format, and perform combination and finally convert the new image to jpeg or png format. Because of huge count of images (about 100000 images), I cant use standard available tools, that uses main memory. I should make all of operations on hard disk. Then I should write entire needing code. I need any information about these formats and similar codes if exists. The programming languages not important, because, I worked with C#, java, c, c++, vb6, vb.net.
    here I give you my code (that perform such task) as sample in matlab:

    
    function [bOperationSuccessfullyCompleted] = JpegImagesMerge(mapsPath,baseX,baseY,baseZ,wLen,hLen,TargetFile)
        bOperationSuccessfullyCompleted = true;
        finalMap = uint8(zeros(hLen*256,wLen*256,3));
        for i=1:hLen
            Y=baseY+i-1; % minus one exist because of i=1 in first step.
            for j=1:wLen
                X=baseX+j-1; % minus one exist because of j=1 in first step.
                mapFileName = strcat(mapsPath,'\','v=46&x=',int2str(X),'&y=',int2str(Y),'&z=',int2str(baseZ),'.jpg');
                if exist(mapFileName,'file')
                    mapFile = imread(mapFileName,'jpg');
                    [szx,szy,szz] = size(mapFile);
                    if szx~=256 || szy~=256
                        bOperationSuccessfullyCompleted = false;
                        break;
                    end              
                    bx = ((j-1)*256+1);
                    by = ((i-1)*256+1);
                    finalMap(by:(by+255),bx:(bx+255),:) = mapFile;
                else
                    bOperationSuccessfullyCompleted = false;
                    break;
                end
            end
            if bOperationSuccessfullyCompleted==false
                break;
            else            
                imwrite(finalMap,TargetFile,'jpg');
            end
        end
    end
    
    Code (markup):
    JpegImagesMerge('D:\gmaps\sat-tabriz-z14\maps',10295,6312,14,9,7,'D:\gmaps\sat-tabriz-z14\tabriz-z14.jpg')

    This program is right but using matlab and running program based on RAM I cant merge more than 1000 images to gather.
     
    ghreza, Dec 9, 2009 IP