1

I am creating a custom blog with php. when the user is uploading an article I am having problem with the images in the post. some images's width are bigger than the main div in my blog (740). I want to use php to check the width of the images if it is bigger than 740 then re-size the image to 740.

<?php
$dom = new domDocument;
$dom->loadHTML($article_content);
$dom->preserveWhiteSpace = false;
$imgs  = $dom->getElementsByTagName("img");
$links = array();

for($i=0;$i<$imgs->length;$i++){
$links[]  = $imgs->item($i)->getAttribute("width");
$image_path = $links[];
$article_source = imagecreatefromstring(file_get_contents($image_path));
$image_width = imagesx($image_source);
if($image_width > 740){$image_width = 740;}      
}   

?>

so far this is the code that I have. I am not sure how to set the image width.(the image already has its original width) UPDATE: I am not trying to save or copy the image. I am trying to access the dom by php and set the image width to $image_width (of all images)

4

2 に答える 2

2

あなたのコードから、GD ライブラリを使用していると思います。その場合、探しているのはimagecopyresized()です。

画像の幅が大きすぎる場合の例を次に示します。

$thumb = imagecreatetruecolor($newwidth, $newheight);

imagecopyresized($small_image, $image_source,
        0, 0, 0, 0, $newwidth, $newheight, $image_width, $image_height);

次に$small_image、画像のスケーリングされたバージョンが含まれます。

于 2012-07-11T23:20:07.937 に答える
1

画像を保存/コピーせずに、HTML ドキュメントの img タグを width 属性を持つタグに置き換える必要があります。

$dom = new domDocument;
$dom->loadHTML($article_content);

$imgElements  = $dom->getElementsByTagName("img");
foreach ($imgElements as $imgElement) {

    $imgSrc = imagecreatefromstring(file_get_contents($imgElement->getAttribute("src")));

    if (imagesx($imgSrc) > 740) {

        // we replace the img tag with a new img having the desired width
        $newE = $dom->createElement('img');
        $newE->setAttribute('width', 740);
        $newE->setAttribute('src', $imgElement->getAttribute("src"));

        // replace the original img tag
        $imgElement->parentNode->replaceChild($newE, $imgElement);
    }
}

// html with "resized" images
echo $dom->saveHTML();
于 2012-07-12T02:51:55.800 に答える