Exemplo n.º 1
0
// -------------------------------------------------------------------------------- //
bool DownloadImage( const wxString &source, const wxString &target, const wxBitmapType imagetype, int maxwidth, int maxheight )
{
    bool RetVal = false;
    wxBitmapType ImageType;
    wxImage *   Image = guGetRemoteImage( source, ImageType );

    if( Image )
    {
        if( maxwidth != -1 )
        {
            guImageResize( Image, maxwidth, ( maxheight != -1 ) ? maxheight : maxwidth );
        }
        RetVal = Image->SaveFile( target, imagetype );

        delete Image;
    }
    return RetVal;
}
Exemplo n.º 2
0
// -------------------------------------------------------------------------------- //
guChannelUpdateImageThread::ExitCode guChannelUpdateImageThread::Entry()
{
    wxImage *       Image = NULL;

    if( !m_ImageUrl.IsEmpty() )
    {
        if( !TestDestroy() )
        {
            wxBitmapType    ImageType;
            Image = guGetRemoteImage( m_ImageUrl, ImageType );
            if( Image )
            {
                //guLogMessage( wxT( "Image loaded ok %u" ), Index );
                if( Image->IsOk() && !TestDestroy() )
                {
                    Image->Rescale( guPODCASTS_IMAGE_SIZE, guPODCASTS_IMAGE_SIZE, wxIMAGE_QUALITY_HIGH );
                }
                else
                {
                  delete Image;
                  Image = NULL;
                }
            }
        }
    }
    //
    if( !TestDestroy() )
    {
        wxCommandEvent event( guChannelEditorEvent, guCHANNELEDITOR_EVENT_UPDATE_IMAGE );
        event.SetClientData( Image );
        wxPostEvent( m_ChannelEditor, event );
    }
    else if( Image )
    {
        delete Image;
    }
    return 0;
}
Exemplo n.º 3
0
// -------------------------------------------------------------------------------- //
guDownloadCoverThread::ExitCode guDownloadCoverThread::Entry()
{
    wxBitmapType ImageType;
    guCoverImage *  CoverImage = NULL;
    wxImage *   Image = guGetRemoteImage( m_UrlStr, ImageType );

    if( Image )
    {
        if( !TestDestroy() )
        {
            CoverImage = new guCoverImage( m_UrlStr, m_SizeStr, Image );
        }
        else
        {
          //guLogWarning( wxT( "Could not load image from the net index %u." ), LastDownload );
          delete Image;
        }
    }

    if( !TestDestroy() )
    {
        //guLogMessage( wxT( "Done: '%s'" ), m_UrlStr.c_str() );
        //m_CoverEditor->m_DownloadEventsMutex.Lock();
        wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, ID_COVEREDITOR_ADDCOVERIMAGE );
        event.SetClientObject( ( wxClientData * ) this );
        event.SetClientData( CoverImage );
        wxPostEvent( m_CoverEditor, event );
        //m_CoverEditor->m_DownloadEventsMutex.Unlock();
    }
    else
    {
        if( CoverImage )
            delete CoverImage;
    }
    return 0;
}
Exemplo n.º 4
0
// -------------------------------------------------------------------------------- //
wxImage * guGetRemoteImage( const wxString &url, wxBitmapType &imgtype )
{
    wxImage *   Image = NULL;
    wxURI       Uri( url );

    wxString FileName = Uri.GetPath().Lower();

    //guLogMessage( wxT( "Downloading '%s' from '%s'" ), FileName.c_str(), url.c_str() );

    wxMemoryOutputStream Buffer;
    wxCurlHTTP http;
    http.AddHeader( wxT( "User-Agent: " ) guDEFAULT_BROWSER_USER_AGENT );
    //http.AddHeader( wxT( "Accept: */*" ) );
    //http.SetOpt( CURLOPT_FOLLOWLOCATION, 1 );
    try {
        http.Get( Buffer, url );
        if( Buffer.IsOk() )
        {
            long ResCode = http.GetResponseCode();
            //guLogMessage( wxT( "ResCode: %lu" ), ResCode );
            if( ( ResCode < 200 ) || ( ResCode > 299 ) )
            {
                //guLogMessage( wxT( "Code   : %u\n%s" ), ResCode, http.GetResponseHeader().c_str() );
                if( ( ResCode == 301 ) || ( ResCode == 302 ) || ( ResCode == 307 ) )
                {
                    wxString Location = http.GetResponseHeader();
                    int Pos = Location.Lower().Find( wxT( "location: " ) );
                    if( Pos != wxNOT_FOUND )
                    {
                        Location = Location.Mid( Pos + 10 );
                        Location.Truncate( Location.Find( wxT( "\r\n" ) ) );
                        return guGetRemoteImage( Location, imgtype );
                    }
                }
            }

//            if( ResCode != 200 )
//            {
//                guLogMessage( wxT( "Error %u getting remote image '%s'\n%s" ),
//                    http.GetResponseCode(),
//                    url.c_str(),
//                    http.GetResponseHeader().c_str() );
//            }

            wxMemoryInputStream Ins( Buffer );
            if( Ins.IsOk() )
            {
                if( FileName.EndsWith( wxT( ".jpg" ) ) ||
                    FileName.EndsWith( wxT( ".jpeg" ) ) )
                  imgtype = wxBITMAP_TYPE_JPEG;
                else if( FileName.EndsWith( wxT( ".png" ) ) )
                  imgtype = wxBITMAP_TYPE_PNG;
                else if( FileName.EndsWith( wxT( ".gif" ) ) )
                  imgtype = wxBITMAP_TYPE_GIF;
                else if( FileName.EndsWith( wxT( ".bmp" ) ) )
                  imgtype = wxBITMAP_TYPE_BMP;
                else
                  imgtype = wxBITMAP_TYPE_INVALID;

                if( imgtype != wxBITMAP_TYPE_INVALID )
                {
                    Image = new wxImage( Ins, imgtype );
                    if( Image )
                    {
                        if( Image->IsOk() )
                        {
                            return Image;
                        }
                        delete Image;
                    }
                }
            }
        }
    }
    catch( ... )
    {
        guLogError( wxT( "Exception downloading image '%s'" ), url.c_str() );
    }

    return NULL;
}