====== How to update an image field from code ====== Don't complicate it: use Web Service API require_once 'include/Webservices/Revise.php'; require_once 'include/tcpdf/tcpdf_barcodes_2d.php'; require_once 'include/tcpdf/tcpdf_barcodes_1d.php'; $barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'QRCODE,H'); //$barcodeobj = new TCPDFBarcode('http://www.tcpdf.org', 'bar_codes'); // export as PNG image $data = $barcodeobj->getBarcodePngData(3, 3, array(0,128,0)); $model_filename=array( 'name'=>'barcode', // no slash nor paths in the name 'size'=>strlen($data), 'type'=>'image/png', 'content'=>base64_encode($data) ); $assetData = array( 'attachments' => array( 'cf_1114' => $model_filename, ), 'id'=> '29x4062', ); vtws_revise($assetData, $current_user); Now, if you need to do this from inside a workflow task you could run into a loop because vtws_revise will actually launch the workflows again. In this case setup the environment for a direct file upload and call **insertIntoAttachment** like this: require_once 'include/tcpdf/tcpdf_barcodes_2d.php'; require_once 'include/tcpdf/tcpdf_barcodes_1d.php'; $barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'QRCODE,H'); //$barcodeobj = new TCPDFBarcode('http://www.tcpdf.org', 'bar_codes'); // export as PNG image $data = $barcodeobj->getBarcodePngData(3, 3, array(0,128,0)); $attachment_name = 'BARCODEname.png'; $filepath = $root_directory.'cache/'.$attachment_name; file_put_contents($filepath, $data); $_FILES['cf_1114'] = array( 'name' => $attachment_name, 'type' => 'image/png', 'tmp_name' => $filepath, 'error' => 0, 'size' => strlen($data), ); $a = CRMEntity::getInstance('Assets'); $a->id = 4062; $a->mode = 'edit'; $a->DirectImageFieldValues['cf_1114'] = $attachment_name; // this is to delete previous image with the same name $a->retrieve_entity_info(4062, 'Assets'); $a->insertIntoAttachment(4062, 'Assets'); unlink($filepath);