使用相同的源图像动态更改图像名称

时间:2013-12-13 06:20:27

标签: php image image-processing

考虑我有一个名为“car.jpg”的图片。

我的网站中有多语言商店,客户希望以各种语言显示相同的图像。像汽车在法语中被称为voiture,因此图像名称应为“voiture.jpg”,但它将显示相同的图像,即car.jpg。

同时在保存/下载图像时,它应该保存为法国商店的voiture.jpg和英国商店的car.jpg。

我计划通过后端面板从客户端输入图像的名称,但无法获得有关如何在前端实现此功能的想法。

注意: - 图片不在我的服务器上

我已经复制了飞行中的图像,并且可以使用类别上传来使用它,但需要比应对图像更好的选项,因为有超过4000张图像。

<img src='./media/scene7/car.jpg' alt='car'>

<?php
    include('class.upload.php');

    $img = new Upload('media/scene7/car.jpg');

    if ($img->uploaded) {
        $img->file_new_name_body = 'voiture';
        $img->file_auto_rename = false;
        $img->file_overwrite = true;
        $img->Process('./media/scene7/translated/');
    }else{
    }

    echo "<br /><br />Car is called voiture in French, you are seeing the image of voiture.<br />";
?>
    <img src='./media/scene7/translated/voiture.jpg' alt='car'>

<?php

    if ($img->uploaded) {
        $img->file_new_name_body = 'auto';
        $img->file_auto_rename = false;
        $img->file_overwrite = true;
        $img->Process('./media/scene7/translated/');
    }else{
        echo "not uploaded";
    }

    echo "<br /><br />Car is called auto in German, you are seeing the image of auto.<br />";

?>
    <img src='./media/scene7/translated/auto.jpg' alt='car'>

<?php

    if ($img->uploaded) {
        $img->file_new_name_body = 'coche';
        $img->file_auto_rename = false;
        $img->file_overwrite = true;
        $img->Process('./media/scene7/translated/');
    }else{
        echo "not uploaded";
    }

    echo "<br /><br />Car is called coche in Spanish, you are seeing the image of coche.<br />";

?>
    <img src='./media/scene7/translated/coche.jpg' alt='car'>

<?php
    $img = new Upload('http://s7d7.scene7.com/is/image/zeon/Stack_Mouse');

    if ($img->uploaded) {
        echo 'uploaded image from url';
    }else{
        echo $img->error;
    }
?>

4 个答案:

答案 0 :(得分:2)

您可以在数据库中将图像作为blob,并根据需要提供名称。

将图像存储为blob的优缺点可以从以下链接中找到 php:Store image into Mysql blob, Good or bad?

答案 1 :(得分:1)

拥有一个数据库表,列出要向用户显示的所有图像文件名及其真实URL。例如,表可能有

+-------------+--------------------------+
|FILENAME     |URL                       |         
+-------------+--------------------------+
|car.jpg      |./media/scene7/car.jpg    |
|voiture.jpg  |./media/scene7/car.jpg    |
|auto.jpg     |./media/scene7/car.jpg    |
|truck.jpg    |./media/scene7/truck.jpg  |
|camion.jpg   |./media/scene7/truck.jpg  |
|lastwagen.jpg|./media/scene7/truck.jpg  |
+-------------+--------------------------+

现在编写一个页面image.php,它需要一个文件名作为查询参数。它应该使用query参数并在数据库表中查找,然后重定向到它找到的URL。

然后,您可以将图像包含在页面中,如

<img src="image.php?file=voiture.jpg" alt="voiture.jpg"/>

当浏览器请求此图片时,系统会调用您的页面,图片最终会来自.media/scene7/car.jpg

答案 2 :(得分:0)

您可以制作像'car'=&gt;这样的哈希表'car.jpg'和'voiture'=&gt; 'car.jpg'。每当客户访问voiture.jpg时,您都可以返回car.jpg。

答案 3 :(得分:0)

您可以通过为每种语言实现一个cofig文件来实现此目的。这是解释: -

假设您有一些像user.jpg,profile.jpg等图像。 现在创建一个french.php文件。

french.php文件的结构: -

<?php
$lang=array();
$lang['user']='french_transalation_of_user';
$lang['profile']='french_transalation_of_profile';
?>

以同样的方式添加您要用法语显示的所有图像名称。现在在网页中动态调用这些名称。您也可以根据需要创建尽可能多的language.php。

我希望你理解逻辑。抱歉英文不好。