Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Process with arguments doesn't work...

Process with arguments doesn't work...

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 3 Posters 1.7k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    filipdns
    wrote on last edited by
    #1

    Hello,

    Trying to convert some files to images with imagemagick, I need to run this command line (at this time, the process is running .bat file but I would like to remove it and execute process only in Qt):

    for %%f in ("\\DGS1109N007\Affichage\Messages\*.*") do ( "\\DGS1109N007\Affichage\Display\imagmagick\magick.exe" convert -density 300 -trim "\\DGS1109N007\Affichage\Messages\*.*" -quality 100 "\\DGS1109N007\Affichage\Display\Messages\output.jpg" )
    

    for that I try to use c++ process in Qt but it doesn't work:

        QDir directory("//DGS1109N007/Affichage/Messages");
        QStringList images = directory.entryList(QStringList(),QDir::Files);
        foreach(QString filename, images) {
        
        program ="//DGS1109N007/Affichage/Display/imagmagick/magick.exe";
    
        QStringList arguments;
        arguments << "convert -density 300 -trim" <<"//DGS1109N007/Affichage/Messages"+filename<<"-quality 100 "<<"//DGS1109N007/Affichage/Display/Messages/output.jpg";
    
        myProcess.start(program,arguments);``
    
    I don't receive any error but it doesn't do any thing, could you help me?
    
    Kind regards
    mrjjM 1 Reply Last reply
    0
    • F filipdns

      Hello,

      Trying to convert some files to images with imagemagick, I need to run this command line (at this time, the process is running .bat file but I would like to remove it and execute process only in Qt):

      for %%f in ("\\DGS1109N007\Affichage\Messages\*.*") do ( "\\DGS1109N007\Affichage\Display\imagmagick\magick.exe" convert -density 300 -trim "\\DGS1109N007\Affichage\Messages\*.*" -quality 100 "\\DGS1109N007\Affichage\Display\Messages\output.jpg" )
      

      for that I try to use c++ process in Qt but it doesn't work:

          QDir directory("//DGS1109N007/Affichage/Messages");
          QStringList images = directory.entryList(QStringList(),QDir::Files);
          foreach(QString filename, images) {
          
          program ="//DGS1109N007/Affichage/Display/imagmagick/magick.exe";
      
          QStringList arguments;
          arguments << "convert -density 300 -trim" <<"//DGS1109N007/Affichage/Messages"+filename<<"-quality 100 "<<"//DGS1109N007/Affichage/Display/Messages/output.jpg";
      
          myProcess.start(program,arguments);``
      
      I don't receive any error but it doesn't do any thing, could you help me?
      
      Kind regards
      mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @filipdns
      Hi
      Check what
      http://doc.qt.io/qt-5/qprocess.html#error
      reports.

      F 1 Reply Last reply
      2
      • mrjjM mrjj

        @filipdns
        Hi
        Check what
        http://doc.qt.io/qt-5/qprocess.html#error
        reports.

        F Offline
        F Offline
        filipdns
        wrote on last edited by
        #3

        @mrjj Thanks mrjj but it doesn't help me, I'm sorry

        mrjjM 1 Reply Last reply
        0
        • F filipdns

          @mrjj Thanks mrjj but it doesn't help me, I'm sorry

          mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @filipdns
          but what did it report ?
          Its impossible to guess what is wrong with no extra info.
          and that function is how QProcess tells how it went.

          btw. i can see
          magick.exe so that seems like windows.
          but you are giving it linux paths as parameter
          "//DGS1109N007/Affichage/Messages"

          windows uses \ and not / so not sure magick.exe likes it.
          also in your sample for .bat, you are using the \ version.

          F 1 Reply Last reply
          0
          • G Offline
            G Offline
            Gerd
            wrote on last edited by
            #5

            Think you are missing a "/" after

            mrjjM 1 Reply Last reply
            2
            • G Gerd

              Think you are missing a "/" after

              mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by
              #6

              @Gerd
              Good catch!
              yes seems filename will be directly appended.

              1 Reply Last reply
              0
              • G Offline
                G Offline
                Gerd
                wrote on last edited by
                #7

                Sorry, last post was incomplete...
                Think you are missing a "/" after "Messages" and before filename in this Line:

                arguments << "convert -density 300 -trim" <<"//DGS1109N007/Affichage/Messages"+filename<<"-quality 100 "<<"//DGS1109N007/Affichage/Display/Messages/output.jpg"
                
                F 1 Reply Last reply
                1
                • mrjjM mrjj

                  @filipdns
                  but what did it report ?
                  Its impossible to guess what is wrong with no extra info.
                  and that function is how QProcess tells how it went.

                  btw. i can see
                  magick.exe so that seems like windows.
                  but you are giving it linux paths as parameter
                  "//DGS1109N007/Affichage/Messages"

                  windows uses \ and not / so not sure magick.exe likes it.
                  also in your sample for .bat, you are using the \ version.

                  F Offline
                  F Offline
                  filipdns
                  wrote on last edited by
                  #8

                  @mrjj You are right, magick don't like / but qt don't like \ then, I don't know...

                  1 Reply Last reply
                  0
                  • G Gerd

                    Sorry, last post was incomplete...
                    Think you are missing a "/" after "Messages" and before filename in this Line:

                    arguments << "convert -density 300 -trim" <<"//DGS1109N007/Affichage/Messages"+filename<<"-quality 100 "<<"//DGS1109N007/Affichage/Display/Messages/output.jpg"
                    
                    F Offline
                    F Offline
                    filipdns
                    wrote on last edited by
                    #9

                    @Gerd Hi Gerd, Yes, the / was missing, now I receive something, but error and not expected conversion...

                    magick.exe: UnableToOpenBlob 'convert -density 300 -trim': No such file or directory @ error/blob.c/OpenBlob/3490.

                    what mean what say mrjj, magick don't accept / but expect ...

                    I will try replace.("/", "\") to see what append..

                    1 Reply Last reply
                    0
                    • G Offline
                      G Offline
                      Gerd
                      wrote on last edited by
                      #10

                      try to check what is in arguments, it seems that you also miss a blnk after "...trim"

                      F 1 Reply Last reply
                      0
                      • G Gerd

                        try to check what is in arguments, it seems that you also miss a blnk after "...trim"

                        F Offline
                        F Offline
                        filipdns
                        wrote on last edited by
                        #11

                        @Gerd Hi Gerd,

                        I found how make it work:

                        program=QDir::toNativeSeparators("//DGS1109N007/Echanges_SAA/Affichage/Display/imagmagick/magick ")+ "convert -density 300 -trim "+ QDir::toNativeSeparators("\"//DGS1109N007/Echanges_SAA/Affichage/Messages/"+filename)+"\" -quality 100 "+QDir::toNativeSeparators("\"//DGS1109N007/Echanges_SAA/Affichage/Display/Messages/output.jpg");
                        

                        now I have an other strange thing not linked with this topic...

                        with:

                        QDir directory("//DGS1109N007/Echanges_SAA/Affichage/Messages");
                            QStringList images = directory.entryList(QStringList(),QDir::Files);
                        
                            for(int i=0;i<images.count();i++) {
                            //do whatever you need to do
                            QString filename=images[i];
                            qDebug()<<"filename"<<filename;
                        
                            program=QDir::toNativeSeparators("//DGS1109N007/Echanges_SAA/Affichage/Display/imagmagick/magick ")+ "convert -density 300 -trim "+ QDir::toNativeSeparators("\"//DGS1109N007/Echanges_SAA/Affichage/Messages/"+filename)+"\" -quality 100 "+QDir::toNativeSeparators("\"//DGS1109N007/Echanges_SAA/Affichage/Display/Messages/output.jpg");
                            myProcess.start(program);
                            myProcess.waitForFinished(10000);
                           
                            }
                        

                        the conersion is made only with the first file, but the qDebug()<<"filename"<<filename; print all files...

                        I try to put some waitForFinished but same result...

                        mrjjM 1 Reply Last reply
                        0
                        • F filipdns

                          @Gerd Hi Gerd,

                          I found how make it work:

                          program=QDir::toNativeSeparators("//DGS1109N007/Echanges_SAA/Affichage/Display/imagmagick/magick ")+ "convert -density 300 -trim "+ QDir::toNativeSeparators("\"//DGS1109N007/Echanges_SAA/Affichage/Messages/"+filename)+"\" -quality 100 "+QDir::toNativeSeparators("\"//DGS1109N007/Echanges_SAA/Affichage/Display/Messages/output.jpg");
                          

                          now I have an other strange thing not linked with this topic...

                          with:

                          QDir directory("//DGS1109N007/Echanges_SAA/Affichage/Messages");
                              QStringList images = directory.entryList(QStringList(),QDir::Files);
                          
                              for(int i=0;i<images.count();i++) {
                              //do whatever you need to do
                              QString filename=images[i];
                              qDebug()<<"filename"<<filename;
                          
                              program=QDir::toNativeSeparators("//DGS1109N007/Echanges_SAA/Affichage/Display/imagmagick/magick ")+ "convert -density 300 -trim "+ QDir::toNativeSeparators("\"//DGS1109N007/Echanges_SAA/Affichage/Messages/"+filename)+"\" -quality 100 "+QDir::toNativeSeparators("\"//DGS1109N007/Echanges_SAA/Affichage/Display/Messages/output.jpg");
                              myProcess.start(program);
                              myProcess.waitForFinished(10000);
                             
                              }
                          

                          the conersion is made only with the first file, but the qDebug()<<"filename"<<filename; print all files...

                          I try to put some waitForFinished but same result...

                          mrjjM Offline
                          mrjjM Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on last edited by
                          #12

                          @filipdns
                          Hi
                          but dont you save all input files to the same filename (output.jpg) ?

                          F 2 Replies Last reply
                          0
                          • mrjjM mrjj

                            @filipdns
                            Hi
                            but dont you save all input files to the same filename (output.jpg) ?

                            F Offline
                            F Offline
                            filipdns
                            wrote on last edited by
                            #13

                            @mrjj hi, not, imagemagic rename output file itself like ouput-1.jpg output-2.jpg

                            1 Reply Last reply
                            0
                            • mrjjM mrjj

                              @filipdns
                              Hi
                              but dont you save all input files to the same filename (output.jpg) ?

                              F Offline
                              F Offline
                              filipdns
                              wrote on last edited by
                              #14

                              @mrjj I openned an other topic for this problem because it's not linked with the title ;-)

                              1 Reply Last reply
                              0

                              • Login

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved